牛客网——刷题篇

简介: 牛客网——刷题篇

文章目录

比较版本号

 二叉树的中序遍历

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

合并区间

比较版本号

 

知识点:字符串,双指针

题解:

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;
    
}

}

相关文章
|
11月前
|
人工智能 Apache 流计算
参与Flink社区活动,免费赢取FFA大会两日通票~
Flink Forward Asia 2024 将于 11 月 29-30 日在上海举行,庆祝 Apache Flink 诞生十周年。大会将回顾 Flink 的技术成就,展望未来十年的发展,并介绍 Flink 2.0 版本。通过三种参与方式,您有机会免费赢取大会两日通票和 Flink 专属周边。
524 13
参与Flink社区活动,免费赢取FFA大会两日通票~
|
11月前
|
Android开发
鸿蒙开发:自定义一个简单的标题栏
本身就是一个很简单的标题栏组件,没有什么过多的技术含量,有一点需要注意,当使用沉浸式的时候,注意标题栏的位置,需要避让状态栏。
235 5
鸿蒙开发:自定义一个简单的标题栏
|
11月前
|
安全 前端开发 云计算
Waline:一款开源、安全、简介的评论系统
阿里云计算巢提供了一键部署waline的功能,无需下载代码或安装复杂依赖,通过简单步骤即可搭建waline —— 一款带后端的极简风评论系统。
Waline:一款开源、安全、简介的评论系统
|
11月前
|
Java 应用服务中间件 测试技术
NoInitialContextException 异常通常会在哪些场景下出现
NoInitialContextException 异常通常在尝试使用 JNDI(Java 命名和目录接口)进行资源查找时,因缺少必要的环境配置或初始化上下文未正确设置而出现。常见于 Java EE 应用中。
169 5
|
11月前
|
敏捷开发 测试技术 持续交付
探索自动化测试:从基础到高级
【10月更文挑战第35天】在软件质量的保证过程中,自动化测试以其高效和可重复性成为不可或缺的一环。本文旨在通过简明的语言和实际案例引导读者了解自动化测试的核心概念、工具选择与应用,以及如何实现从入门到精通的过渡。我们将一起探讨如何将自动化测试策略融入日常开发流程中,提升测试效率,同时确保产品质量。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
506 3
|
机器学习/深度学习 监控 搜索推荐
电商平台如何精准抓住你的心?揭秘大数据背后的神秘推荐系统!
【10月更文挑战第12天】在信息爆炸时代,数据驱动决策成为企业优化决策的关键方法。本文以某大型电商平台的商品推荐系统为例,介绍其通过收集用户行为数据,经过预处理、特征工程、模型选择与训练、评估优化及部署监控等步骤,实现个性化商品推荐,提升用户体验和销售额的过程。
531 1
|
存储 前端开发 JavaScript
🚀 10 个 GitHub 存储库,助你成为前端巨匠✨
本文介绍了10个极具价值的GitHub存储库,旨在帮助各级JavaScript开发人员提升技能。这些资源涵盖了从基本概念到高级算法、编码风格指南、面试准备等各个方面,包括经典书籍、实用工具和面试手册。无论您是刚入门的新手还是有经验的开发者,这些存储库都能为您提供丰富的学习资源,助您在JavaScript领域更进一步。探索这些资源,开启您的学习之旅吧!
229 0
🚀 10 个 GitHub 存储库,助你成为前端巨匠✨
物联网卡:物联网卡停机多久会被注销
物联网卡(IoT SIM卡)的停机与注销政策通常取决于具体的服务提供商(如电信运营商、物联网平台提供商等)以及用户与这些服务提供商之间签订的合同条款。因此,没有一个统一的、适用于所有情况的规则来规定物联网卡停机多久后会被注销。 然而,一般来说,物联网卡的停机与注销可能遵循以下一些常见的逻辑或规定:
|
机器学习/深度学习 人工智能 数据可视化
AI克隆你的声音详细教程
AI克隆你的声音详细教程
3099 0
|
自然语言处理 搜索推荐 Apache
手把手带你入门Apache伪静态的配置
网站伪静态,主要是为了增加搜索引擎的友好度,方便网站内容被搜索引擎收录而诞生的。类似网站上常用的301重定向、404页面的设置等在SEO方面是必不可少的。 伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。
963 1
手把手带你入门Apache伪静态的配置