[Java刷算法]牛客—剑指offer第一天

以后的每天小编都会刷三题,并且写成博客记录知识和心情,感兴趣的小伙伴可以和我一起刷,一起了解面试,一起打破迷茫,坚定远方。

👉免费注册陪伴小编30天刷完《剑指offer》👈

✨今日三剑

=====================================================================


文章目录

  • 🎈前言

  • ✨今日三剑

  • JZ3 数组中重复的数字

    • 题目描述

    • 思路详解

    • 代码与结果

  • JZ4 二维数组中的查找

    • 题目描述

    • 思路详解

    • 代码与结果

  • JZ5 替换空格

    • 题目描述

    • 思路详解

    • 代码与结果

  • ✨总结


JZ3 数组中重复的数字

============================================================================

题目描述


在这里插入图片描述

思路详解


本题的思路比较简单,首先将这个数组排序,遍历数组,找到当前的和前一个相同的直接输出就好了。没找到输出-1.

注意:这个方法要注意循环的时候下标要从1开始哦,不然会报数组下标异常滴。

代码与结果



import java.util.*;



public class Solution {

    /**

     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可

     *

     * 

     * @param numbers int整型一维数组 

     * @return int整型

     */

    public int duplicate (int[] numbers) {

        // write code here

        Arrays.sort(numbers);

        for(int i = 1 ; i < numbers.length; i++)

            if(numbers[i] == numbers[i - 1]) return numbers[i];

        return -1;

    }

}



在这里插入图片描述

JZ4 二维数组中的查找

============================================================================

题目描述


在这里插入图片描述

思路详解


这个题目有点难度。仔细读题发现了一个重要条件,这个二位数组行和列都是递增的,也就意味着左上最小,右下最大,并且左下元素大于它上方的元素,小于它右方的元素,右上元素与之相反。

根据这个规律,我们可以从左下出发分情况往上或者右进行找,同时要先判断一下特殊情况哦。

具体细节上代码。

代码与结果



public class Solution {

    public boolean Find(int target, int [][] array) {

        //优先判断特殊

        if(array.length == 0) 

            return false;

        int n = array.length;

        if(array[0].length == 0) 

            return false;

        int m = array[0].length;

        //从最左下角的元素开始往左或往上

        for(int i = n - 1, j = 0; i >= 0 && j < m; ){

            //元素较大,往上走

            if(array[i][j] > target)  

                i--;

            //元素较小,往右走

            else if(array[i][j] < target)

                j++;

            else

                return true;

        }

        return false;

    }

}



在这里插入图片描述

JZ5 替换空格

========================================================================

题目描述


最后

面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?

掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。


最后

面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?

掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。

[外链图片转存中…(img-x6z8hZaN-1714482599123)]

[外链图片转存中…(img-HCHXiEyX-1714482599124)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值