随笔分类 -  LeetCode

摘要:题目: 思路: 1 hashset 加入集合判断新的数是否在set中,防止死循环 2 递归处理,出口时 n == 1 返回true , 集合包含新的数据(拆分后的平方相加) 返回false (一)代码 class Solution { public boolean isHappy(int n) { 阅读全文
posted @ 2021-10-18 10:44 朝才 阅读(109) 评论(0) 推荐(0)
摘要:题目: 思路: 1 快速排序思想,倒序排列 + 数学公式 int x = 12; int y = 345 x 拼接 y = 12345 = 12 * 1000 + 345 = x * 1000 + y; y 拼接 x = 34512 = 345 * 100 + 12 = y * 100 + x; 上 阅读全文
posted @ 2021-10-17 23:30 朝才 阅读(88) 评论(0) 推荐(0)
摘要:题目: 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict, 判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 思路: 1 将字符串加入hashset 中 2 动态规划,新建dp数组 (一)代码 动态规划, 一天不学就废 阅读全文
posted @ 2021-10-15 11:05 朝才 阅读(69) 评论(0) 推荐(0)
摘要:题目: 思路: 分治法 遍历字符串,将字符出现次数少于K次的,存入数组(数组下标为( 字符 - 'a' ),内容为出现次数) 作为分割条件,对字符串进行多条件切割 递归字串,求max (一)代码 class Solution { public int longestSubstring(String 阅读全文
posted @ 2021-09-30 11:17 朝才 阅读(124) 评论(0) 推荐(0)
摘要:题目: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 思路: 1 复制一个数组 移动后的位置为(当前位置+k)% 数组长度 (一)思路一 代码 睡个好觉 阅读全文
posted @ 2021-09-29 14:47 朝才 阅读(39) 评论(0) 推荐(0)
摘要:题目: 思路: 1 遍历链表将Node中的val 放入双端队列 2 用双端队列的api (注意用K % node数量) 是移动的次数,减少重复移动 getLast //获取最后一个值 pollLast //移除最后一个值 addFirst //将最后一个值加到头部 3 新建链表,将队列中的值链起来 阅读全文
posted @ 2021-09-29 13:56 朝才 阅读(74) 评论(0) 推荐(0)
摘要:题目 给你一个字符串 s 和一个字符串数组 dictionary 作为字典,找出并返回字典中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字典序最小的字符串。如果答案不存在,则返回空字符串。 思路: 1 排序 运用Collections.sort 对Li 阅读全文
posted @ 2021-09-14 22:29 朝才 阅读(64) 评论(0) 推荐(0)
摘要:题目: 思路: 指针位移,一次比较一列 (一)代码 class Solution { public String longestCommonPrefix(String[] strs) { String res = ""; int compareTimes = Integer.MAX_VALUE; f 阅读全文
posted @ 2021-08-05 16:08 朝才 阅读(61) 评论(0) 推荐(0)
摘要:题目: 思路: 按空格拆分 反转拆分后数组中的每一个串(双指针) 用StringBuffer 进行连接 (一)代码 class Solution { public String reverseWords(String s) { String[] strs = s.split(" "); String 阅读全文
posted @ 2021-08-04 20:14 朝才 阅读(58) 评论(0) 推荐(0)
摘要:题目: 思路: 1 Arrays.sort() 排序两个数组 2 定义双指针,和一个list 集合 访问数组相等的加入list (一)代码 class Solution { public int[] intersect(int[] nums1, int[] nums2) { //排序 Arrays. 阅读全文
posted @ 2021-07-30 15:55 朝才 阅读(72) 评论(0) 推荐(1)
摘要:题目: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 思路: 1 双指针 swap 进 阅读全文
posted @ 2021-07-30 15:06 朝才 阅读(83) 评论(2) 推荐(0)
摘要:题目: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2  阅读全文
posted @ 2021-07-30 14:54 朝才 阅读(95) 评论(0) 推荐(0)
摘要:题目: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 思路: 1 双重for 循环 比较 2 hashmap key 存字符,value 存出现次数 再次遍历找出第一个次数为1的 (一)代码 HashMap work 阅读全文
posted @ 2021-07-28 18:11 朝才 阅读(76) 评论(0) 推荐(0)
摘要:题目: 思路: 1 Brian Kernighan算法 x &= (x - 1) 每次可以从最右边擦除一个二进数 1 2 动态规划 (一)代码 Brian Kernighan算法 class Solution { public int[] countBits(int n) { //位运算 算法 x 阅读全文
posted @ 2021-07-14 16:04 朝才 阅读(69) 评论(0) 推荐(0)
摘要:前言: 背包问题: 给定一组物品,每种物品都有自己的重量和价格, 在限定的总重量内,我们如何选择,才能使得物品的总价格最高 题目: 思路: 转移方程不太好理解 1 初始化dp数组为10001 dp[0] = 0 2 转移方程 dp[j] = min(dp[j],dp[j - coin] + 1) 3 阅读全文
posted @ 2021-07-14 14:12 朝才 阅读(126) 评论(0) 推荐(0)
摘要:题目: 思路: 1 暴力 : 从每一个单元格出发 每次在下方 右方 新作一行一列进行判断是否满足条件 2 动态规划 : dp[i][j]由其上方、左方和左上方的三个相邻位置的dp值决定 当前位置的元素值等于三个相邻位置的元素中的最小值加 1 根据题目分析状态转移方程: dp(i, j)=min(dp 阅读全文
posted @ 2021-07-13 16:27 朝才 阅读(82) 评论(0) 推荐(0)
摘要:题目: 思路: 递归 从每一个位置出发,向上下左右走 与目标数据进行对比 边界条件 是否越界 是否相等 注意: 走过的路不能走, 走过的路用 * 或其他非字母标记, 递归回来的时候记得 还原为原来的数据,否则回来时,一直会走false (一)代码 class Solution { public bo 阅读全文
posted @ 2021-07-12 15:06 朝才 阅读(76) 评论(0) 推荐(0)
摘要:题目: 思路: 动态规划 拿到题目重要是分析这个 求 dp 数组的方程 也就是状态转移方程 还有就是注意边界 由题意分析 由于不可以在相邻的房屋闯入,所以在当前位置 n 房屋可盗窃的最大值, 要么就是 n-1房屋可盗窃的最大值, 要么就是 n-2 房屋可盗窃的最大值加上当前房屋的值,二者之间取最大值 阅读全文
posted @ 2021-07-09 16:42 朝才 阅读(55) 评论(0) 推荐(0)
摘要:题目: 思路: 由题意分析可将问题转化为 数字排序 1 快速排序 2 双指针 (一) 代码 快速排序 (二) 代码 双指针 嘀嘀嘀 阅读全文
posted @ 2021-07-09 10:54 朝才 阅读(225) 评论(0) 推荐(0)
摘要:题目: 思路: 递归+回溯 回溯模板 1 定义全局变量 2 for 循环 i 从传入的变量开始 3 add (添加) 4 递归方法 5 remove (add.size() - 1) (移除) (一) 代码 递归 + 回溯 千万不要在黎明到来的前一刻放弃 阅读全文
posted @ 2021-07-08 15:19 朝才 阅读(62) 评论(0) 推荐(0)