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<rows && column>=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();
HashMap<Character,Integer> map = new LinkedHashMap<Character,Integer>();
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 ' ';
}
}

剑指offer计划5(查找算法中等版)---java的更多相关文章

  1. 剑指offer计划9(动态规划中等版)---java

    1.1.题目1 剑指 Offer 42. 连续子数组的最大和 1.2.解法 得到转移方程后,单次遍历. 当前面的连续子数组的和比较是否大于0,是则加起来, 若小于零,则当前的值就可当子数组的开头. 判 ...

  2. 剑指offer计划25(模拟中等)---java

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

  3. 剑指offer计划16( 排序简单)---java

    1.1.题目1 剑指 Offer 45. 把数组排成最小的数 1.2.解法 这题看的题解,发现自己思路错了. 这里直接拿大佬的题解来讲吧. 一开始这里就把创一个string的数组来存int数组 Str ...

  4. 剑指Offer——知识点储备-常用算法

    剑指Offer--知识点储备-常用算法 快速排序 注:若排序是有序的,采用快排,则退化为冒泡排序. 解决这个问题,采用两个选取基准的方法 (1)随机选取基数(在这个区间内随机取一个数) 出现的恶劣情况 ...

  5. 剑指offer计划19( 搜索与回溯算法中等)---java

    1.1.题目1 剑指 Offer 64. 求1+2+-+n 1.2.解法 这题看评论区真的绝了,都是人才,各个说话都好听,我看到个还有用异常来结束的就离谱. 这题用了&&当左边为fal ...

  6. 剑指offer计划20( 搜索与回溯算法中等)---java

    1.1.题目1 剑指 Offer 07. 重建二叉树 1.2.解法 注释解法. 1.3.代码 class Solution { int[] preorder; HashMap<Integer, ...

  7. 【剑指offer】二分查找二维数组

    1 2 3 4 5 6 7 8 9 3 3 1 2 3 4 5 6 7 8 9 10 3 3 12 2 3 4 5 6 7 8 9 10 例子输出: Yes No No 时间限制:1 秒 内存限制:3 ...

  8. 剑指offer 计划1(栈与队列)---java

    1.1.题目1 剑指 Offer 09. 用两个栈实现队列 1.2.解法 解法如题目所说.定义两个栈.这里假设第一个栈为a,第二个栈为b. 实现两个函数增加尾和删除头. 增加即直接push入第一个栈. ...

  9. 剑指offer计划27(栈与队列困难)---java

    1.1.题目1 剑指 Offer 59 - I. 滑动窗口的最大值 1.2.解法 解题思路:(来自作者bigbeats) 相当于维护一个最大队列(队头元素最大,向队尾非严格递减) 在未形成窗口前,先构 ...

随机推荐

  1. Bootstrap 树形列表与右键菜单

    Bootstrap 树形列表与右键菜单 介绍两个Bootstrap的扩展 Bootstrap Tree View 树形列表 jQuery contextMenu 右键菜单 Demo采用CDN分发,直接 ...

  2. Spring-初见

    目录 组成 Spring Boot与Spring Cloud IOC DI 1.常量注入 2.Bean注入 3.Properties注入 p命名和c命名注入 Bean Singleton Protot ...

  3. Netty 源码分析系列(一)Netty 概述

    前言 关于Netty的学习,最近看了不少有关视频和书籍,也收获不少,希望把我知道的分享给你们,一起加油,一起成长.前面我们对 Java IO.BIO.NIO. AIO进行了分析,相关文章链接如下: 深 ...

  4. .NET5控制台程序使用EF连接MYSQL

    .NET5控制台程序使用EF连接MYSQL 1.使用nuget下载: Microsoft.Extensions.Configuration.Json Pomelo.EntityFrameworkCor ...

  5. H5页面自动烟花特效

    代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> ...

  6. noip模拟测试30

    考试总结:这次考试,不是很顺利,首先看了一眼题目,觉得先做T1,想了一会觉得没什么好思路,就去打暴力,结果我不会枚举子集,码了半天发现不对,就随便交了一份代码上去,结果CE了,然后去打T3,20min ...

  7. shell的if语句

    目录 一.基础测试 1 test命令 2 文件测试 一.基础测试 1 test命令 测试表达式是否成立 ,若不成立返回0,否则返回其他数值 格式1:test 条件表达式 格式2:[条件表达式] 2 文 ...

  8. pycharm配置selenium碰到的问题

    Inherit global site-packages: 导入本地包 Make available to all projects : 使所有项目都可用 chromedriver的版本一定要与Chr ...

  9. 接口管理效率神器Apifox

    前言 你是一个测试,你们团队目前开发模式是前后端分离. 某一天,版本V1.0接口评审完,发布在了swagger上,前后端各自进行开发.此时你根据接口文档将新接口迁移到JMeter上,然后开始编写接口测 ...

  10. Android逆向工程师的黑科技

    你们发现了吗?Android逆向.安全方面的工程师真的越来越"稀有"了. 以腾讯.美团.百度为代表的大厂们,在某招聘网站上居然薪酬高达30-60k. 现在移动端市场越来越火热,AP ...