Day05_剑指Offer
时间:2021-08-16
本文章向大家介绍Day05_剑指Offer,主要包括Day05_剑指Offer使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Day05_剑指Offer
链接里面都是辅导性的图,一看就会做了,加油,你行的。
package com.sorrymaker.day2905;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
/**
* 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
* @Author nextGame
* @Date 2021/8/16 20:09
* @Version 1.0
*/
public class FirstUniqChar {
public char firstUniqChar(String s) {
HashMap<character,boolean> dic = new HashMap<>();
char[] sc = s.toCharArray();
for(char c : sc) {
//遍历s字符串的每个字符,存储下来出现的了第几遍,当出现第一遍的时候是true,出现第二遍就会变成false了。
dic.put(c,!dic.containsKey(c) );
}
//再遍历一遍字符串,dic 里面遇到true ,就直接返回C。
for(char c : sc) {
if(dic.get(c)){
return c;
}
}
return ' ';
}
}
package com.sorrymaker.day2905;
import org.junit.Test;
/**
* 在一个 n * m 的二维数组中,
* 每一行都按照从左到右递增的顺序排序,
* 每一列都按照从上到下递增的顺序排序。
* 请完成一个高效的函数,输入这样的一个二维数组和一个整数,
* 判断数组中是否含有该整数。
* @Author nextGame
* @Date 2021/8/16 19:09
* @Version 1.0
*/
public class FindNumberIn2DArray {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
//这个是一个二维递增的数组。所以这样子处理后,是没问题的。
//i 是列,j是行。
int i = matrix.length-1, j=0;
while (i>=0 && j<matrix[0].length){ 这里成立的话,就要把行--。="" if(matrix[i][j]=""> target){
i--;
//这里成立的话,就要把列--。
}else if(matrix[i][j] <target ){="" j++;="" }else{="" return="" true;="" }="" false;="" ```="" ```java="" package="" com.sorrymaker.day2905;="" import="" org.junit.test;="" **把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。="" *="" 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。="" 例如,数组="" [3,4,5,1,2]="" 为="" [1,2,3,4,5]="" 的一个旋转,该数组的最小值为1。="" 这道题还是用到二分法。~~!!="" @author="" nextgame="" @date="" 2021="" 8="" 16="" 19:22="" @version="" 1.0="" public="" class="" minarray="" {="" int="" minarray(int[]="" numbers)="" 这里的数组是递增排序的数组(处理中间有个最小值,需要我们旋转数据,找到最小值)。="" i为左边界,="" j为右边界。="" i="0,j=" numbers.length-1;="" while="" (i<j){="" m="(i+j)/2;" 这下面的逻辑="" 当m索引上的值大于j索引的值,左边界到m肯定不会有最小值,="" if(numbers[m]="">numbers[j]){
//所以这里i = m+1 ; 提高效率。
i=m+1;
//当m所以的值小于 索引j的值,说明 要么m的位置为最小值,要么就是左边界到m之间存在最小值
//即是 [i , m] 。i到m之间存在最小值。
}else if(numbers[m]</target></matrix[0].length){></character,boolean>
原文地址:https://www.cnblogs.com/sorrymaker/p/15149853.html
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(4)--用OZ工具制作openstack镜像
- centos下部署NTP时间服务器同步环境记录
- ASP.NET MVC扩展库
- centos7.2部署vnc服务记录
- nginx访问报错:Too many open files accept:
- iptables之NAT端口转发设置
- 使用Combres 库 ASP.NET 网站优化
- jQuery和asp.net mvc相关资源链接
- JavaScriptSerializer 序列化json 时间格式
- Nginx反向代理+负载均衡简单实现(https方式)
- 在网页中给Flash加上超级链接
- ASP.NET MVC HandleErrorAttribute 和 远程链接
- javascript实现数字转大写金额的函数
- 如何在GridView的Footer内显示总计?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Greenplum集群扩容总结
- Leetcode刷题 237. 删除链表中的节点 两行代码实现
- Leetcode刷题 206. 反转链表 递归迭代两种方法实现
- MySQL索引和查询优化
- Elasticsearch:Index 生命周期管理入门
- springboot面试杀手锏-自动配置原理
- flink 1.11.2 学习笔记(1)-wordCount
- 我是如何开发维护8千多行代码组件的
- 我对JS延迟异步脚本的思考
- 大数据表查询优化 - 表分区
- 日志系统rsync和日志切割logrotate-Linux每日一练(9)
- Canvas 绘制点线相交
- Canvas监测雷达
- Canvas线条花环
- JQ俄罗斯方块儿