![](https://img-blog.csdnimg.cn/20201102091535921.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
记录leetCode的刷题,一题一个方法类型
长臂人猿
进阶的猿猴
展开
-
(LeetCode)回溯匹配路径.79. 单词搜索
思路:经典回溯全匹配路径,类似全排列。原创 2022-12-27 16:23:55 · 148 阅读 · 2 评论 -
(LeetCode)回溯和O(n)找规律方法: 78. 子集
也就是逐层列举(类似冒泡的遍历形式 多层 for i=j)。还有一种我们可以从用例看出规律,即每一次添加新的元素nums[i],所造成原有结果集增加的集合为:(集合i-1) + (集合i-1的每个数组加上新元素nums[i])。如: nums[i]=1 : {空集} , {空集,1} 即: [] , [1](又是一个JAVA面试题)有点动态规划的味道: dp[i] = dp[i-1] , dp[i-1]每个元素加nums[i]时间 0 ms 击败 100% 内存 41.7 MB 击败 30.31%原创 2022-12-27 16:21:49 · 131 阅读 · 0 评论 -
(LeetCode)哑巴节点的应用:24. 两两交换链表中的节点
两两遍历交换,注意哑巴节点面去头节点烦恼。建立哑巴节点面去考虑头节点问题。原创 2022-12-27 16:20:13 · 153 阅读 · 0 评论 -
或非和java的移位操作符
MECE 原则,提升逻辑思维水平MECE 原则(Mutually Exclusive Collectively Exhaustive)的中文意思是“相互独立,完全穷尽”,简而言之,能够做到不重叠、不遗漏,兼顾排他性和完整性。MECE 原则是麦肯锡提出的一种结构化思考方式,无论是报告撰写,提案演讲,业务分析,它是一种很好的思维方式。LeetCode.剑指56:Ipublic class _56_I数组中数字出现的次数 { public static void main(String原创 2022-01-24 19:26:03 · 658 阅读 · 0 评论 -
LeetCode_740_删除并获得点数:利用hash转换题型
原题740. 删除并获得点数给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入:nums = [3,4,2] 输出:6 解释: 删除 4 获得 4 个点数,因此 3 也被删除。 之后,删除 2 获得 2个点数。总共获得 6 个点数。解题思原创 2021-08-19 15:55:42 · 349 阅读 · 0 评论 -
自定义比较器Comparator接口和Comparable接口及详解String.compareTo方法的使用
前言 Comparator是一个位于java.util包的接口(interface),一般由Collections.sort()方法和Arrays.sort()实现:使用主要实现它的compare方法:new Comparator<Object>() { @Override public int compare(Object o1, Object o2) { .... }} 其中如果数组为对象数组原创 2021-08-02 14:12:26 · 1514 阅读 · 1 评论 -
递归_汉诺塔问题_JAVA
思路怎么做呢?我们将问题简化,把它们看作两个饼:最大的饼和组合饼。这样即可形式化定义将现象我们转化为计算机可理解的数学公式:第一次的分解可知:H(N)=H(N-1)+1+H(N-1)这里我们将H(N)分成了两个盘子,一个最大的盘子和小盘的合并盘。将合并盘继续分解可以有:H(N-1)=H(N-2)+1+H(N-2)直到最终 H(2)=H(1)+1+H(1)=1+1+1=3别忘了 H(1)=1,a1=1,所以 H(1)=a1,则有汉诺塔的Java代码实现public原创 2021-03-03 18:51:28 · 261 阅读 · 2 评论 -
堆结构_以有序来简化统计:每日温度_739
题目每日温度请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。解题思路核心就是建一个栈,原创 2021-02-20 16:35:27 · 248 阅读 · 0 评论 -
计算不限定大小的两个数相加
前言int类型数据是有一定大小范围的,在32位机子下:[-2147483648, 2147483647]。如何进行超出范围的计算呢?解题思路将数字转换为String类型,再转换为char[]数组进行模拟人算:进位法。以leetcode第二题为例值得注意的是,2->4->3,其实便于理解可以看作是 3 < 4 < 2: 3 < 4 < 2 4 < 6 < 4—————————————————— 8 &...原创 2020-11-27 13:51:39 · 293 阅读 · 2 评论 -
hash数组法长度不固定:集合
/*** 核心在于:你可以任何顺序返回解决方案,ID 的顺序也不受限制。此外,题目给出的数据保证至少存在一种解决方案。** 首先象到hash数组法,但是不确定hash数组的固定长度,采用字典的方式:Map,其实ArrayList应该也可以* **/public class 用户分组 { public List<List<Integer>> groupThePeople(int[] groupSizes) { Map dict...原创 2020-11-27 10:39:28 · 329 阅读 · 1 评论 -
Hash数组法.有效的字母异位词.242
前言题目242. 有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。解题思路字母的数量是有限的,26个。可以建立一个26长度的数组,来存储每个字母的数量。如果每个字母数量一样则是异位词,以此判断它是否为字母异位词。默认原创 2020-11-26 15:54:45 · 145 阅读 · 0 评论 -
二分查找.基于有序数组的查找方法.704
前言抛砖引玉,先来个简单的。解题思路low mid high。(low <= high),没有=,会少比较最后一个mid代码class Solution { public int search(int[] nums, int target) { int low = 0; int high = nums.length - 1; int mid = 0; ...原创 2020-11-26 15:38:26 · 222 阅读 · 0 评论