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. Python基础之PyQt5关闭界面

    想让执行完程序后自动关闭窗口,而不用点击右上角叉叉的方法是self.close(),具体应用还是以treewidget为例. 前面我们写了一个treewidget的界面,并且实现了界面代码分离,具体实 ...

  2. jvm源码解读--14 defNewGeneration.cpp gc标记复制之后,进行空间清理

    进入Eden()->clean()函数 void EdenSpace::clear(bool mangle_space) { ContiguousSpace::clear(mangle_spac ...

  3. linux下利用JMX监控Tomcat

    利用JMX监控Tomcat,就是相当于部署在tomcat上的应用作为服务端,也就是被管理资源的对象.然后通过程序或者jconsole远程连接到该应用上来.远程连接需要服务器端提供ip和port.如果需 ...

  4. 【Maven实战技巧】「插件使用专题」Maven-Assembly插件实现自定义打包

    前提概要 最近我们项目越来越多了,然后我就在想如何才能把基础服务的打包方式统一起来,并且可以实现按照我们的要求来生成,通过研究,我们通过使用maven的assembly插件完美的实现了该需求,爽爆了有 ...

  5. 论文笔记:(CVPR2017)PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

    目录 一. 存在的问题 二. 解决的方案 1.点云特征 2.解决方法 三. 网络结构 四. 理论证明 五.实验效果 1.应用 (1)分类: ModelNet40数据集 (2)部件分割:ShapeNet ...

  6. 移动APP我们需要关注什么

    移动APP关注的点比web或者PC上的程序更多 1.测试用例的设计 移动互联网的快节奏,要放弃传统的测试用例编写方式,不需要写详细的测试用例,采用罗列测试点的方式如思维导图,这样既节省时间又能够直观清 ...

  7. selenium WebDriverWait

    Selenium WebDriverWait的知识: 一.webdrivewait 示例代码  from selenium import webdriver  from selenium.webdri ...

  8. 深入理解Https如何保证通信安全

    作为一名ABC搬运工,我相信很多人都知道Https,也都知道它是用来保证通信安全的,但是如果你没有深入了解过Https,可能并不知道它是如何保证通信安全的.我也是借着这次机会,和大家分享下我深入了解的 ...

  9. C# 10 完整特性介绍

    前言 开头防杠:.NET 的基础库.语言.运行时团队从来都是相互独立各自更新的,.NET 6 在基础库.运行时上同样做了非常多的改进,不过本文仅仅介绍语言部分. 距离上次介绍 C# 10 的特性已经有 ...

  10. Linux 中的虚拟网络接口

    独立博客地址:https://ryan4yin.space/posts/linux-virtual-network-interfaces/ 本文用到的字符画工具:vscode-asciiflow2 L ...