力扣373-查找和最小的K队数字
题目:力扣
解题思路:
可以先了解一下优先队列
对于集合中找前K小的元素,常用的方法是可以使用大小为K的大根堆(用一个降序的优先队列实现),依次遍历集合中的元素
当堆未满时,即元素个数小于K 直接将元素加入到堆里
当堆满了时 若当前元素大于堆顶,则跳过
若当前元素不大于堆顶,则将堆顶移除,在堆中加入当前元素
最后,堆里的元素就是前K小的元素。———————————————————————————————————
12345678910111213141516171819202122232425class Solution { public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) { PriorityQueue<List<Integer>> queue = new Priority ...
BFS
BFS1.使用场景BFS又称广度优先遍历,常用于寻找最短路径和迷宫最短路径的求解,也用于树的层次遍历等问题。
2.形象理解我们可以把他想象成WIFI信号一样的存在(从一个小点不断向外一层一层的扩散)
我们也可以像理解走迷宫一样理解他
迷宫只能上下左右移动,青蓝色石砖不可走
例 :从起点开始,走出的第一步只能是他的右边和下面的第一个格子的两种可能,这两个第一步又可以走自己四个不同方向的第二步
迷宫解题1. 解题需要1)一个整形二维数组搭建迷宫
2)一个判断二维数组判定是否遍历过了
3)一个队列来实现你在地图中的每一步走向情况
4)一个类或者一个结构体含有x,y的信息,若要求最短路径则加上最短路径信息
5)四个方向向量如dxy = [[1,0],[0,-1],[-1,0],[0,1]]分别表示右下左上
2. 解题步骤1)将起始点添加进队列(头出)遍历状态变为true,当队列不为空时开启循环
2)取队列第一个元素,for循环四个方向向量(即上下左右移动)
3)当目的位置点为终点时,可结束
4)若不是终点,判断他有没有被遍历过并且不是障碍,则把这一点的
加入队列(尾进)
5)操作 ...
力扣334-递增的三元子序列
334. 递增的三元子序列一. 题目描述给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。
示例 1
123输入:nums = [1,2,3,4,5]输出:true解释:任何 i < j < k 的三元组都满足题意
示例 2
123输入:nums = [5,4,3,2,1]输出:false解释:不存在满足题意的三元组
示例 3
1234输入:nums = [2,1,5,0,4,6]输出:true解释:三元组 (3, 4, 5) 满足题意因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6
提示
1 <= nums.length <= 5 * 105
-231 <= nums[i] <= 231 - 1
二. 笔者见解此题是一道经点的找递增下标的递增数字题,题目 ...
ACwing2058-笨拙的手指
AcWing 2058. 笨拙的手指一. 题目描述奶牛贝茜正在学习如何在不同进制之间转换数字。
但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔。
每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错。
例如,如果她将数字 14 转换为二进制数,那么正确的结果应为 1110,但她可能会写下 0110 或 1111。
贝茜不会额外添加或删除数字,但是可能会由于写错数字的原因,写下包含前导 0 的数字。
给定贝茜将数字 N 转换为二进制数字以及三进制数字的结果,请确定 N 的正确初始值(十进制表示)。
输入格式第一行包含 N 的二进制表示,其中一位是错误的。
第二行包含 N 的三进制表示,其中一位是错误的。
输出格式输出正确的 N 的值。
数据范围0≤N≤1090≤N≤109,且存在唯一解。
示例输入样例:
121010212
输出样例:
114
样例解释
1414 在二进制下的正确表示为 11101110,在三进制下的正确表示为 112112。
二. 笔者理解本题为常见进位制转换题,通过二进制集合与三进制集合的交集为其解,采用秦九绍算法实现向十进制转换,通过哈 ...
力扣71-简化路径
力扣71. 简化路径一.题目描述给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/‘ 开头),请你将其转化为更加简洁的规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,’//‘)都被视为单个斜杠 ‘/‘ 。 对于此问题,任何其他格式的点(例如,’…’)均被视为文件/目录名称。
请注意,返回的 规范路径 必须遵循下述格式:
始终以斜杠 ‘/‘ 开头。两个目录名之间必须只有一个斜杠 ‘/‘ 。最后一个目录名(如果存在)不能 以 ‘/‘ 结尾。此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 ‘.’ 或 ‘..’)。返回简化后得到的 规范路径 。
示例 1:
123输入:path = "/home/"输出:"/home"解释:注意,最后一个目录名后面没有斜杠'
...
JAVA集合
JAVA集合一.集合存在的意义1.数组的不便利性
2.集合的理解与好处
二.集合的框架体系
1.集合分类1)集合入门须知1.集合主要是由两组(单链集合,双链集合)
2.Collection 接口拥有两个重要的子接口List、Set,他们的直线子类都是单列集合
3.Map接口的实现子类 是双链集合,存放K-V
4.单双链区别由下图代码可体现
List中一般值存储单列数据,而Map不限于此
2)迭代器介绍英文接口名:Iterator
1.具体作用如下图
2.具体使用须知如下图
在Iterator中其实已经有一个For循环便利方法了,所以不在建议使用for方法遍历,直接使用while可以提升效率,且操作简单
3.其它直接遍历方法
使用增强for,在Collection集合中
增强for的底层任然是迭代器
增强for可以理解为简化版本的迭代器
快捷键 I
3.方便方法介绍
IDEA中有快速生成while迭代器循环的快捷键itit
查看所有快捷键的快捷键ctrl+j
3)List接口介绍
Static内存分析
Static内存分析一.基础须知1.静态变量1)定义:
在一个Java类中,可以使用static关键字来修饰全员变量,该变量被称作静态变量
2)访问形式:
类名 . 变量名
实例名 . 变量名
3) 只能修饰成员变量,不能修饰局部变量
2.静态方法1)定义:被static关键字修饰的方法被称为静态方法
2)访问形式:
类名 . 静态方法名
实例名 . 静态方法名
3)说明:
非静态方法可以访问静态方法或非静态方法的,静态只能访问静态的
原因: 静态方法或变量随着类的加载而加载,而非静态的方法或变量随着对象的创建而加载。
3.静态代码块1)再JAVA中,使用一堆大括号包围起来的若干行代码被称为一个代码块
2)使用static关键字修饰的代码块称为静态代码块。
3)当类被加载时,静态代码块会执行,并且只执行一次。
4)在程序中,经常使用静态代码块来对类的成员变量进行初始化
4.非静态方法中不能创建 静态变量原因:静态变量的核心是数据共享,则优先存在于全体,可全体使用,而成员方法里定义的变 ...
力扣246-丑数2
1234567891011121314151617181920212223242526272829class Solution { public int nthUglyNumber(int n) { //三指针解法 int[] dp = new int[n + 1]; dp[1] = 1; //将第一个丑数给数组的第二个值,以便于观察与理解 int p2 = 1, p3 = 1, p5 = 1; for (int i = 2; i <= n; i++) { //从第三个开始 int num2 = dp[p2] * 2, num3 = dp[p3] * 3, num5 = dp[p5] * 5; //乘法用第一个丑数求第2个丑数 dp[i] = Math.min(Math.min(num2, num3), num5); //第二个抽数是最小丑数,赋值给数 ...
力扣1184.公交站间的距离
力扣题1184.公交站的距离题目描述环形公交路线上有 n 个站,按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离,distance[i] 表示编号为 i 的车站和编号为 (i + 1) % n 的车站之间的距离。
环线上的公交车都可以按顺时针和逆时针的方向行驶。
返回乘客从出发点 start 到目的地 destination 之间的最短距离。
示例 1:
输入:distance = [1,2,3,4], start = 0, destination = 1输出:1解释:公交站 0 和 1 之间的距离是 1 或 9,最小值是 1。
示例 2:
输入:distance = [1,2,3,4], start = 0, destination = 2输出:3解释:公交站 0 和 2 之间的距离是 3 或 7,最小值是 3。
示例 3:
输入:distance = [1,2,3,4], start = 0, destination = 3输出:4解释:公交站 0 和 3 之间的距离 ...





