牛客网——刷题篇

简介: 牛客网——刷题篇

文章目录

比较版本号

 二叉树的中序遍历

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

合并区间

比较版本号

 

知识点:字符串,双指针

题解:

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,以下为详细部署步骤。
1425 0
|
算法 Java
闲话银行家舍入法,以及在程序中如何实现
闲话银行家舍入法,以及在程序中如何实现
670 0
|
网络协议 物联网 5G
探索未来网络:IPv6的演进与应用
本文深入探讨了互联网协议第六版(IPv6)的发展背景、技术特性及其在现代网络中的应用。通过分析IPv4面临的地址枯竭问题,阐述了IPv6作为解决方案的重要性和紧迫性。文章详细介绍了IPv6相较于IPv4的改进之处,如更大的地址空间、简化的包头格式、增强的组播支持等,并探讨了IPv6在实际部署中遇到的挑战及应对策略。通过对IPv6过渡技术和双栈技术的讨论,揭示了其在促进下一代互联网发展中的关键作用。此外,文章还展望了IPv6在未来网络安全、物联网整合以及新兴技术中的应用前景,强调了掌握IPv6技术对于把握未来互联网发展趋势的重要性。
339 11
|
机器学习/深度学习 人工智能 搜索推荐
探究人工智能在医疗健康中的应用与挑战
本文深入探讨了人工智能(AI)在医疗健康领域中的应用及其所面临的挑战。随着科技的不断进步,AI技术在医疗领域的应用日益广泛,从疾病诊断、治疗方案制定到患者护理等方面都展现出巨大的潜力。然而,尽管AI在医疗健康领域取得了显著成果,但也面临着数据隐私、算法偏见和伦理道德等方面的挑战。本文将详细介绍这些应用和挑战,并探讨可能的解决方案,以期为读者提供对AI在医疗健康领域发展的全面理解。
Meta浙大校友让评估模型自学成才,数据全合成无需人工标注,训练Llama 3 70B超过405B
【9月更文挑战第21天】近日,一篇名为《Self-Taught Evaluators》的论文引起了广泛关注。该论文由Meta与浙江大学校友合作完成,提出一种创新的模型评估方法,通过让评估模型自学习训练,无需依赖昂贵且易过时的人工标注数据。此方法利用合成数据,通过迭代生成对比模型输出并训练基于大型语言模型的评估器,从而实现自我迭代改进。研究结果显示,在不使用任何标注偏好数据的情况下,这种方法显著提升了评估模型的性能,甚至超越了一些现有模型。尽管如此,该方法在实际应用中仍需进一步验证。论文地址:https://arxiv.org/abs/2408.02666
291 4
|
机器学习/深度学习 自然语言处理 搜索推荐
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
912 1
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
619 2
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能的未来:机器学习与深度学习的融合之路
【7月更文挑战第29天】随着科技的不断进步,人工智能领域正迎来前所未有的发展机遇。本文将深入探讨机器学习与深度学习这两大技术支柱如何相互促进,共同推动人工智能向更高层次发展。通过分析当前的研究趋势和技术挑战,我们将描绘出一个更加智能、互联的未来图景。
341 3
|
运维 Devops jenkins
DevOps实践之路:从自动化部署到持续交付
【7月更文挑战第16天】在当今快速迭代的软件生命周期中,DevOps已经成为提升效率、缩短产品上市时间的关键因素。本文将深入探讨DevOps的核心理念与实践,特别是如何通过自动化工具实现代码的持续集成和部署,以及如何构建有效的持续交付流程。我们将从理论出发,结合实际案例分析,为读者提供一套完整的DevOps落地方案。
|
数据安全/隐私保护 开发者
支付系统12----使用沙箱,沙箱的使用步骤,沙箱参数的获取,支付宝应用要具备,创建应用,绑定应用,配置密钥,上线应用,签约功能,才能够完成使用,最后签约,要上传企业的营业的营业执照
支付系统12----使用沙箱,沙箱的使用步骤,沙箱参数的获取,支付宝应用要具备,创建应用,绑定应用,配置密钥,上线应用,签约功能,才能够完成使用,最后签约,要上传企业的营业的营业执照