Loading

12 2020 档案

摘要:题目链接:435.无重叠区间 思路:动态规划。假设第i个区间最少擦除n个区间,即dp[i]=n。所以第i+1个区间需要擦除最少的区间数为dp[i+1]=min(dp[i]+1, dp[j]+cnt);其中,cnt表示第i个区间与前i-j个区间重叠了,重叠数cnt=i-j。 代码: class Sol 阅读全文
posted @ 2020-12-31 15:02 yoyuLiu 阅读(68) 评论(0) 推荐(0) 编辑
摘要:题目链接:剪绳子 思路:由于n的范围变大了,无法使用动态规划,因为动态规划需要比较大小,而含有取模运算的数值是没法比较大小的。所以,参考题解。当n大于4时,尽量多地取3,当n小于4时,绳子就不进行分割了,因为怎么分绳子都不如自身乘进去来得大。 代码: class Solution { public 阅读全文
posted @ 2020-12-30 22:35 yoyuLiu 阅读(61) 评论(0) 推荐(0) 编辑
摘要:题目链接:二维数组中的查找 思路:二维矩阵数值分布特点是左上角高,右下角低。如果从最高处或最低处开始搜索,那么搜寻路径会很多。而从矩阵右上角开始搜索的话,可以发现,右上角的左边都是递减,下边是递增,那么,从左上角出发,比target大时,就走左边;比target小时就走下边,直到找到target或者 阅读全文
posted @ 2020-12-29 23:21 yoyuLiu 阅读(55) 评论(0) 推荐(0) 编辑
摘要:题目链接:从上到下打印二叉树 思路:队列 代码: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(i 阅读全文
posted @ 2020-12-29 11:38 yoyuLiu 阅读(92) 评论(0) 推荐(0) 编辑
摘要:题目链接:把数字翻译成字符串 思路:从数字高位向低位进行遍历,假设遍历到第i个位置,那么开始判读可不可以和前面的数字进行组合:当不和前面的数字组合时,该位数字自己表示一个字符;当和前面数字组合时,先判断能不能组合,如01、31、26、40,这些只有一种翻译方式,也就是说只有和前面组合时位于[10,2 阅读全文
posted @ 2020-12-29 11:11 yoyuLiu 阅读(63) 评论(0) 推荐(0) 编辑
摘要:题目连接:86.分隔链表 思路:遍历一遍链表,将表中结点分为两类,一类是小于给定的x,另一类是大于等于x。输出结果时要考虑四种情况:输入的表头为空;没有小于x的节点;没有大于等于x的节点;既有小于x又有大于等于x的。 代码: /** * Definition for singly-linked li 阅读全文
posted @ 2020-12-28 21:25 yoyuLiu 阅读(36) 评论(0) 推荐(0) 编辑
摘要:题目连接:39.组合总和 思路:暴力遍历。先对数组排序,在进行枚举。 代码: class Solution { private List<List<Integer>> res = new ArrayList<>(); public List<List<Integer>> combinationSum 阅读全文
posted @ 2020-12-28 14:09 yoyuLiu 阅读(56) 评论(0) 推荐(0) 编辑
摘要:题目:下一个排列 思路:找规律。在字典序中,用在字典中出现的次序代表该字符的值,用直接连接字符,那么最小排列的字符串就是单调递增的一条直线。从最小排列开始逐渐增大排列,那么可以发现从直线的末端开始,会不断的出现顶点并向前延伸,直到直线变成了单调递减。可以发现每一次增大的排列都是末端顶点向前移动。为了 阅读全文
posted @ 2020-12-28 13:30 yoyuLiu 阅读(53) 评论(0) 推荐(0) 编辑
摘要:题目链接:复杂链表复制 思路:哈希表。先遍历一遍用hash表存储新旧链表对应的结点,然后再遍历一遍通过哈希表确定新链表中random所指向的结点。 代码: /* // Definition for a Node. class Node { int val; Node next; Node rando 阅读全文
posted @ 2020-12-28 00:12 yoyuLiu 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题目链接:剪绳子 思路: 暴力(会超时)。假设输入为n,那么当某个位置的左边长度为i,右边长度为n-i时,可以枚举出四种情况: 左边进行分段,右边进行分段。那么变成递归的行为,对左右段递归调用本方法。 左边不进行分段,右边进行分段。同理,对右边递归调用。左边长度为本身。 左边进行分段,右边不进行分段 阅读全文
posted @ 2020-12-27 22:54 yoyuLiu 阅读(50) 评论(0) 推荐(0) 编辑
摘要:题目链接:字符串的排序 思路:全排列字符顺序,要去重。先排序,因为想把重复的字符放在一起,这样遍历的时候方便处理重复的字符串;然后递归地遍历每个位置,组合所有情况。 代码: class Solution { private List<String> list = new ArrayList<>(); 阅读全文
posted @ 2020-12-27 15:51 yoyuLiu 阅读(43) 评论(0) 推荐(0) 编辑
摘要:题目:29.两树相除 思路:搜索答案,使用二分。题目限定不能使用乘除取模,那么只能使用加减。最基础的想法就是不断的累加除数,直到累加的除数超过被除数时,前一个累加的除数就是结果。这种搜寻的过程可以使用二分方法。最开始的想法是设置一个数n,然后每累加除数(记作b),有n+=n; b+=b; 。然后当超 阅读全文
posted @ 2020-12-27 13:04 yoyuLiu 阅读(68) 评论(0) 推荐(0) 编辑
摘要:题目链接:205.同构字符串 代码: class Solution { public boolean isIsomorphic(String s, String t) { if(s.length() != t.length()) return false; char[] map = new char 阅读全文
posted @ 2020-12-27 11:07 yoyuLiu 阅读(55) 评论(0) 推荐(0) 编辑
摘要:题目链接:把数组排成最小的数 思路:对数组进行排序,假设要{x, y}组成最小数,那么通过比较"xy"和"yx"的大小,可以得到最小值,对整个数组按这种比较大小方式进行排序,最好得到的数组就是最小数。(证明见评论讲解) 代码: class Solution { public String minNu 阅读全文
posted @ 2020-12-26 16:58 yoyuLiu 阅读(63) 评论(0) 推荐(0) 编辑
摘要:题目链接:重建二叉树 思路:根据前序和中序的排列规律,在中序遍历时,根节点的左边是左子树结点,右边是右子树结点,而前序遍历中首先出现根结点,紧接着根结点的是左子树结点,然后是右子树结点。所以,我们只需要确定在前序和中序中根结点的位置,通过根结点可以知道左子树和右子树结点的位置,该问题便转化为根据左右 阅读全文
posted @ 2020-12-26 13:41 yoyuLiu 阅读(72) 评论(0) 推荐(0) 编辑
摘要:题目链接:数值的整数次方 思路:二分法。对幂次方进行二分,但需要考虑次方运算的特殊情况,这儿,0次方结果都为0,底数为1时结果都为1。 代码: class Solution { public double myPow(double x, int n) { if(x == 1 || x == 0) r 阅读全文
posted @ 2020-12-26 13:09 yoyuLiu 阅读(73) 评论(0) 推荐(0) 编辑
摘要:博客园样式更改时间12月25日。 今天对博客园的主题进行修改,使用的是开源的博客园主题模板,样式修改方法文档在这 阅读全文
posted @ 2020-12-25 14:18 yoyuLiu 阅读(68) 评论(0) 推荐(0) 编辑
摘要:题目:24.两两交换链表中的节点 思路:链表交换 代码: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode 阅读全文
posted @ 2020-12-25 10:27 yoyuLiu 阅读(82) 评论(0) 推荐(0) 编辑
摘要:题目链接:455.分发饼干 思路:排序。 代码: class Solution { public int findContentChildren(int[] g, int[] s) { int cnt = 0; Arrays.sort(g); Arrays.sort(s); for(int i=0, 阅读全文
posted @ 2020-12-25 10:01 yoyuLiu 阅读(72) 评论(0) 推荐(0) 编辑
摘要:题目链接:387.字符串的第一个唯一字符 代码: class Solution { public int firstUniqChar(String s) { int[] map = new int[26]; for(char c : s.toCharArray()){ map[c - 'a'] ++ 阅读全文
posted @ 2020-12-23 21:31 yoyuLiu 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题目链接:103.二叉树的锯齿形层序遍历 思路:双栈。 代码: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tre 阅读全文
posted @ 2020-12-22 14:02 yoyuLiu 阅读(114) 评论(0) 推荐(0) 编辑
摘要:题目链接:746使用最小费用爬楼梯 代码: class Solution { public int minCostClimbingStairs(int[] cost) { int fir, sec; fir = sec = 0; for(int i=2; i<=cost.length; i++){ 阅读全文
posted @ 2020-12-21 12:36 yoyuLiu 阅读(83) 评论(0) 推荐(0) 编辑
摘要:316. 去除重复字母 Difficulty: 中等 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 **注意:**该题与 1081 相同 示例 1: 输入:s = "bcabc" 输出:"abc" 示例 2 阅读全文
posted @ 2020-12-20 17:52 yoyuLiu 阅读(183) 评论(0) 推荐(0) 编辑
摘要:题目链接:48. 旋转图像 思路:模拟。逐行旋转。 代码: class Solution { public void rotate(int[][] matrix) { for(int i=0; i<((matrix.length + 1)>>1); i++){ helper(matrix, i); 阅读全文
posted @ 2020-12-19 12:06 yoyuLiu 阅读(51) 评论(0) 推荐(0) 编辑
摘要:题目连接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/ 思路:动态规划。设置两个值为own和empty,分别表示第i天手上持有股票和没有股票。第i天手上持有股票时,如果前一 阅读全文
posted @ 2020-12-17 15:16 yoyuLiu 阅读(54) 评论(0) 推荐(0) 编辑
摘要:题目连接:https://leetcode-cn.com/problems/word-pattern/ 代码: class Solution { public boolean wordPattern(String pattern, String s) { String[] t = s.split(" 阅读全文
posted @ 2020-12-16 15:31 yoyuLiu 阅读(88) 评论(0) 推荐(0) 编辑
摘要:题目链接:49. 字母异位词分组 思路:设置个哈希表,表键为排序后的字符串,表值为List,List中存放的字符串在排序后有相同的表键。 代码: class Solution { public List<List<String>> groupAnagrams(String[] strs){ Map< 阅读全文
posted @ 2020-12-14 13:18 yoyuLiu 阅读(32) 评论(0) 推荐(0) 编辑
摘要:题目链接:剑指 Offer 41. 数据流中的中位数 思路:极大堆、极小堆。因为输入是数据流不是数组,说明输入的数据是不确定的。一般来说先排序,然后返回中间数,但每查询一次就要排序,时间复杂度较高。所以想能不能每次查询都可以直接获取到中间数,而不是对输入的数据排序取中间数。那么,我们就把输入的数据分 阅读全文
posted @ 2020-12-13 12:06 yoyuLiu 阅读(85) 评论(0) 推荐(0) 编辑
摘要:题目链接:376. 摆动序列 思路:输入数组可以类似于折线图,那么每次波动只保留波峰和波谷就好。 代码: class Solution { public int wiggleMaxLength(int[] nums) { int len=0; for(int i=0,next = i; i<nums 阅读全文
posted @ 2020-12-12 09:58 yoyuLiu 阅读(121) 评论(0) 推荐(0) 编辑
摘要:题目链接:649. Dota2 参议院 思路:题目假设每个人能够作出最优决定,那么,当前参议员能够作出决定时,他一定是禁用他下一位另一派的参议员,这样才能保证己方能够处于优势地位。那么设banOfR和banOfD分别为R和D被禁的人数,每次遍历只需判断当前数是否有权利,没有权利说明他被上一位其他派的 阅读全文
posted @ 2020-12-11 11:46 yoyuLiu 阅读(132) 评论(0) 推荐(0) 编辑
摘要:题目链接:842. 将数组拆分成斐波那契序列 思路:暴力遍历。从长度为1开始,初始化n1、n2、n3,当n1+n2!=n3时,n3长度加1,直到超出字符串长度的一半;当n1+n2==n3时,令n1=n2,n2=n3,然后获取n3的值,并重新判断呢n1+n2是不是等于n3. 代码: class Sol 阅读全文
posted @ 2020-12-11 10:38 yoyuLiu 阅读(96) 评论(0) 推荐(0) 编辑
摘要:题目链接:62. 不同路径 代码: class Solution { public int uniquePaths(int m, int n) { int[][] path = new int[m][n]; for(int i=0; i<m; i++){ path[i][0] = 1; } for( 阅读全文
posted @ 2020-12-10 23:48 yoyuLiu 阅读(58) 评论(0) 推荐(0) 编辑
摘要:题目链接:剑指 Offer 56 - II. 数组中数字出现的次数 II 官方题解:面试题56 - II. 数组中数字出现的次数 II(位运算 + 有限状态自动机,清晰图解) 思路:数组中只有一个数字出现一次,其他数字出现三次,那么可以统计二进制各个位数上各自1出现的次数,然后模3,那么最后得到的二 阅读全文
posted @ 2020-12-07 14:09 yoyuLiu 阅读(56) 评论(0) 推荐(0) 编辑
摘要:题目链接:861. 翻转矩阵后的得分 思路:给一个0-1矩阵,每行表示一个二进制数,要求翻转矩阵后的各行之和的值最高。那么只要保证矩阵每列中的1出现次数最多就行,对于第一列,应该通过翻转使它全部为1,然后对后面的矩阵列只要保证每列1出现的次数大于等于矩阵行数一半就行。 代码: class Solut 阅读全文
posted @ 2020-12-07 10:36 yoyuLiu 阅读(111) 评论(0) 推荐(0) 编辑
摘要:题目:https://leetcode-cn.com/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/ 思路:滑动窗口。用map记录每个字符出现的位置。当字符不在map中时,就往map中添加字符和位置,当字符在map中时 阅读全文
posted @ 2020-12-06 12:42 yoyuLiu 阅读(77) 评论(0) 推荐(0) 编辑
摘要:题目:https://leetcode-cn.com/problems/task-scheduler/submissions/ 官方题解:任务调度器 代码: class Solution { public int leastInterval(char[] tasks, int n) { char[] 阅读全文
posted @ 2020-12-05 15:24 yoyuLiu 阅读(132) 评论(0) 推荐(0) 编辑
摘要:题目:https://leetcode-cn.com/problems/split-array-into-consecutive-subsequences/ 题意:将一个排序好的数组分割成多个长度不小于3的连续子序列,例如:输入[1,2,2,3,3,4],有“1,2,3”、“2,3,4”,可以分割; 阅读全文
posted @ 2020-12-04 13:50 yoyuLiu 阅读(183) 评论(0) 推荐(0) 编辑
摘要:题目:https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/ 代码: class Solution { public int movingCount(int m, int n, int k) { LinkedList< 阅读全文
posted @ 2020-12-04 02:03 yoyuLiu 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题目:https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof/ 思路:从左往右遍历一遍,再从左往右遍历。 代码: class Solution { public int[] constructArr(int[] a) { int[ 阅读全文
posted @ 2020-12-03 13:37 yoyuLiu 阅读(43) 评论(0) 推荐(0) 编辑
摘要:题目:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/ 代码: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNo 阅读全文
posted @ 2020-12-03 00:12 yoyuLiu 阅读(68) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示