牛客网——刷题篇

简介: 牛客网——刷题篇

文章目录

比较版本号

 二叉树的中序遍历

数组中只出现一次的两个数字

合并区间

比较版本号

 

知识点:字符串,双指针

题解:

import java.util.*;

public class Solution {


public int compare (String version1, String version2) {
    // write code here
    String[] numsOfV1 = version1.split("\\."); // 记得这里分割的时候需要加两个斜杠
    String[] numsOfV2 = version2.split("\\.");
    
    int index = 0;
    
    while (index < numsOfV1.length && index < numsOfV2.length) {
        int num1 = Integer.parseInt(numsOfV1[index]);
        int num2 = Integer.parseInt(numsOfV2[index]);
        if (num1 > num2) {
            return 1;
        } else if (num1 < num2) {
            return -1;
        }
        index ++;
    }
    
    while (index < numsOfV1.length) {
        int num1 = Integer.parseInt(numsOfV1[index]);
        if (num1 > 0) {
            return 1;
        }
        index ++;
    }
    
    while (index < numsOfV2.length) {
        int num2 = Integer.parseInt(numsOfV2[index]);
        if (num2 > 0) {
            return -1;
        }
        index ++;
    }
    
    return 0;
}

}
 二叉树的中序遍历

 

知识点:树,递归,广度优先搜索(BFS)

 题解:

import java.util.*;

/*

  • public class TreeNode {
  • int val = 0;
  • TreeNode left = null;
  • TreeNode right = null;
  • public TreeNode(int val) {
  • this.val = val;
  • }
  • }

*/

public class Solution {

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return int整型一维数组
 */
public int[] inorderTraversal (TreeNode root) {
    // write code here
    if(root == null)return new int[0];
    ArrayList<Integer> ans = new ArrayList<>();
    inOrder(root, ans);
    int[] res = new int[ans.size()];
    int i=0;
    for(int n: ans){
        res[i++] = n;
    }
    return res;
}
public void inOrder(TreeNode node, ArrayList<Integer> ans){
    if(node == null)return;
    inOrder(node.left, ans);
    ans.add(node.val);
    inOrder(node.right, ans);
}

}
数组中只出现一次的两个数字

 

知识点:位运算,哈希

 题解:

import java.util.*;

public class Solution {

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param array int整型一维数组 
 * @return int整型一维数组
 */
public int[] FindNumsAppearOnce (int[] array) {
    // write code here
    int tmp = 0, n = array.length;
    for(int i=0; i<n; i++){
        tmp ^= array[i];
    }
    int div = 1;
    while(tmp != 0){
        if((tmp & 1) == 1) div <<= 1;
        tmp >>= 1;
    }
    int a = 0, b = 0;
    for(int i=0; i<n; i++){
        if((array[i] & div) != 0) a ^= array[i];
        else b ^= array[i];
    }
    return new int[]{b, a};
}

}
合并区间

知识点:排序,数组

题解:

import java.util.*;
/**

  • Definition for an interval.
  • public class Interval {
  • int start;
  • int end;
  • Interval() { start = 0; end = 0; }
  • Interval(int s, int e) { start = s; end = e; }
  • }

*/
public class Solution {

public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
    if (intervals.size() == 0) {
        return new ArrayList<>();
    }
    Collections.sort(intervals, new Comparator<Interval>() {
        public int compare(Interval o1, Interval o2) {
            if (o1.start != o2.start) {
                return o1.start - o2.start;
            } else {
                return o1.end - o2.end;
            }
        }
    });
    
    ArrayList<Interval> result = new ArrayList<>();
    result.add(intervals.get(0));
    int count = 0;
    for (int i = 1; i < intervals.size(); i++) {
        Interval o1 = intervals.get(i);
        Interval origin = result.get(count);
        if (o1.start > origin.end) {
            result.add(o1);
            count++;
        } else {
            result.remove(count);
            Interval s = new Interval(origin.start, o1.end);
            if (o1.end < origin.end) {
                s.end = origin.end;
            }
            result.add(s);
        }
    }
    return result;
    
}

}

相关文章
|
监控 数据可视化 关系型数据库
PostgreSQL主备库搭建
pg主备库的搭建,首先需在2个节点安装pg软件,然后依次在2个节点配置主备。 本文采用os为CentOS7.6,pg版本使用14.2,以下为详细部署步骤。
1418 0
|
存储 分布式计算 资源调度
阿里巴巴飞天大数据架构体系与Hadoop生态系统
先说Hadoop 什么是Hadoop? Hadoop是一个开源、高可靠、可扩展的分布式大数据计算框架系统,主要用来解决海量数据的存储、分析、分布式资源调度等。Hadoop最大的优点就是能够提供并行计算,充分利用集群的威力进行高速运算和存储。
10985 59
|
Oracle 关系型数据库 MySQL
OceanBase实践入门:高可用原理和容灾方案
OceanBase的多副本(奇数)设计,以及使用Paxos协议同步事务日志,是OceanBase高可用能做到自动切换(RTO约20s)和不丢数据(RPO=0)的关键。OceanBase在这个设计上还衍生出很多特性:如负载均衡和异地多活等。
6120 0
|
监控 关系型数据库 测试技术
性能压测工具选型对比
本文是《Performance Test Together》(简称PTT)系列专题分享的第二期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系,并提供有例可依的实战。
23788 84
|
弹性计算 运维 负载均衡
阿里云轻量应用服务器和ECS突发性能t6有什么区别?
阿里云服务器ECS突发性能型t6和轻量应用服务器如何选择?一个限制CPU基准性能,一个100% CPU性能
800 0
阿里云轻量应用服务器和ECS突发性能t6有什么区别?
【Axure教程】用中继器做聊天对话APP(微信案例)
【Axure教程】用中继器做聊天对话APP(微信案例)
【Axure教程】用中继器做聊天对话APP(微信案例)
|
边缘计算 缓存 前端开发
前端性能优化:当页面渲染遇上边缘计算
当前几种常见的前端性能优化方案仍然不可避免地会存在一些缺点。本文在 ESI (Edge Side Include) 的基础上,提出了一种新的优化思路:边缘流式渲染方案(ESR),即借助 CDN 的边缘计算能力,将静态内容与动态内容以流式的方式,先后返回给用户。(文末福利:下载《覆盖全端业务的大前端技术》电子书)
4681 1
前端性能优化:当页面渲染遇上边缘计算
|
缓存 前端开发 Java
BO,PO,VO,DTO的区别
BO,PO,VO,DTO的区别
1080 0
BO,PO,VO,DTO的区别
|
JavaScript
[webpack-cli] Error: Cannot find module ‘vue/compiler-sfc‘
[webpack-cli] Error: Cannot find module ‘vue/compiler-sfc‘
1747 0
|
存储 容灾 Cloud Native
云栖大会演讲干货|PolarDB & PolarDB-X在海底捞APP的深度应用
本篇内容将从4个部分为读者介绍关于PolarDB & PolarDB-X在海底捞APP的深度应用,进一步介绍海底捞APP项目及海底捞APP云上架构的经验,分享海底捞利用PolarDB和PolarDB-X带来的业务收益。
829 0
云栖大会演讲干货|PolarDB & PolarDB-X在海底捞APP的深度应用