剑指offer计划5(查找算法中等版)---java

剑指offer计划5(查找算法中等版)---java

1.1、题目1

剑指 Offer 04. 二维数组中的查找

1.2、解法

其实就是暴力解法的升级版,从最后一行开始判断,通过num当前的大小,

如果还是大于目标值则行数-1,若是小于则列数+1

1.3、代码

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if(matrix==null || matrix.length==0 ||matrix[0].length==0){
            return false;
        }
        int rows = matrix.length,columns = matrix[0].length;
        int row = 0,column= matrix[0].length-1;
        while(row=0){
            int num=matrix[row][column];
            if(num==target) return true;
            else if(num>target) column--;
            else row++;
        }
        return false;

    }
}

2.1、题目2

剑指 Offer 11. 旋转数组的最小数字

2.2、解法

这题题目说明了是旋转数组,我个人理解,就是数组被平移过,

原先是排序好的。这里我用二分查找的方法,判断中间和右边的值的比较,

若是中间值较大,说明,最小值在右边,若是中间值较小,说明最小值在左边。

中间值大时,left变成mid+1,从而达到将二分查找的范围缩小到右半部分

中间值小时同理,若是中间值与右边值相同,right-1。

最终左边与右边重合,范围左边值。

2.3、代码

class Solution {
    public int minArray(int[] numbers) {
        int len=numbers.length,left=0,right=len-1;
        while(left<=right){
            int mid = left+(right-left)/2;
            if(numbers[mid]>numbers[right]){
                left=mid+1;
            }else if(numbers[mid]<numbers[right]){ right="mid;" }else="" right--;="" }="" return="" numbers[left];=""

3.1、题目3

剑指 Offer 50. 第一个只出现一次的字符

3.2、解法

我这题突发奇想用hashmap来实现该题目,LinkedHashMap可以实现按put的顺序取出。

getOrDefault取数据加1,再遍历得值

3.3、代码

class Solution {
    public char firstUniqChar(String s) {
        if (s=="") return ' ';
        char []c = s.toCharArray();
        HashMapmap = new LinkedHashMap();
        for(char i:c){
            map.put(i,map.getOrDefault(i,0)+1);
        }
        for (Character key : map.keySet()) {
        if(map.get(key)==1){
                return key;
            }
        }
        return ' ';
    }
}
www.sobd.cc
(0)

相关推荐

  • 剑指offer

    03 数组中重复的数字 public int findRepeatNumber(int[] nums){ //排序后的数组,重复元素必然相邻 Arrays.sort(nums); //结果集 int ...

  • ​LeetCode刷题实战37: 解数独

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • (1条消息) 跳槽必刷算法题系列(一)

    今天是小浩算法 "365刷题" 第104天 问:程序员最讨厌康熙的哪个儿子. 答:胤禩. 01 PART 搜索二维矩阵 这道题目非常的高频!看起来是在考察矩阵搜索,其实和矩阵一点关 ...

  • Java泛型——泛型矩阵类

    Java泛型--泛型矩阵类 所有矩阵,加法和乘法操作都是类似,所以设计一个父类,不用管元素类型,目的描述所有类型的矩阵共享的通用操作 创建若干适用于指定矩阵类型的子类,实例:两种类型int和Ratio ...

  • 每日一起 剑指offer (顺时针打印矩阵)

    编程是很多偏计算机.人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用.因此小白决定开辟一个新的板块"每日一题",通过每天一道编程题目来强化和锻炼自己的编程能力 ...

  • 编程语言剑指offer计划25(模拟中等)---java

    1.1.题目1 剑指 Offer 29. 顺时针打印矩阵 1.2.解法 常规开头,先判断特殊情况,然后创建四个变量存放矩阵四边的长度限制. 创建res数组存放结果. 循坏开始,遍历完一行或者一列,就将 ...

  • 剑指offer计划7(搜索与回溯算法简单版)---java

    1.1.题目1 剑指 Offer 26. 树的子结构 1.2.解法 这题看了解法,感叹真的6,代码量减了很多. (A != null && B != null) && ...

  • 编程语言剑指offer计划28(搜索与回溯算法困难)---java

    1.1.题目1 剑指 Offer 37. 序列化二叉树 1.2.解法 这题给我笑死了,我看到题解有个解法,我愿称之为神. public class Codec { private TreeNode r ...

  • LeetCode 之 剑指 Offer 10- II. 青蛙跳台阶问题(Java)

    文章目录 LeetCode 之 剑指 Offer 10- II. 青蛙跳台阶问题(Java) 一.题目 二.解题思路 三.代码 LeetCode 之 剑指 Offer 10- II. 青蛙跳台阶问题( ...

  • 每日一题 剑指offer(二维数组中的查找)

    编程是很多偏计算机.人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用.因此小白决定开辟一个新的板块"每日一题",通过每天一道编程题目来强化和锻炼自己的编程能力 ...

  • 剑指offer之二维数组中查找

    剑指offer之二维数组中查找

  • 剑指offer之partition算法

    剑指offer之partition算法

  • 【剑指Offer】数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不同时为0 解法1 最直接的思路,计算base的 ...

  • 【剑指Offer】链表中倒数第k个结点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 解法 基本思路是使用两个辅助指针p, q,让p先走k - 1步后,p, q两个指针再一起走 这样当p指针走到链表的末尾时,q指针刚好走到的就是倒数 ...