摘要:
316. 去除重复字母 Difficulty: 中等 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 **注意:**该题与 1081 相同 示例 1: 输入:s = "bcabc" 输出:"abc" 示例 2 阅读全文
摘要:
题目链接:48. 旋转图像 思路:模拟。逐行旋转。 代码: class Solution { public void rotate(int[][] matrix) { for(int i=0; i<((matrix.length + 1)>>1); i++){ helper(matrix, i); 阅读全文
摘要:
题目连接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/ 思路:动态规划。设置两个值为own和empty,分别表示第i天手上持有股票和没有股票。第i天手上持有股票时,如果前一 阅读全文
摘要:
题目连接:https://leetcode-cn.com/problems/word-pattern/ 代码: class Solution { public boolean wordPattern(String pattern, String s) { String[] t = s.split(" 阅读全文
摘要:
题目链接:49. 字母异位词分组 思路:设置个哈希表,表键为排序后的字符串,表值为List,List中存放的字符串在排序后有相同的表键。 代码: class Solution { public List<List<String>> groupAnagrams(String[] strs){ Map< 阅读全文
摘要:
题目链接:剑指 Offer 41. 数据流中的中位数 思路:极大堆、极小堆。因为输入是数据流不是数组,说明输入的数据是不确定的。一般来说先排序,然后返回中间数,但每查询一次就要排序,时间复杂度较高。所以想能不能每次查询都可以直接获取到中间数,而不是对输入的数据排序取中间数。那么,我们就把输入的数据分 阅读全文
摘要:
题目链接:376. 摆动序列 思路:输入数组可以类似于折线图,那么每次波动只保留波峰和波谷就好。 代码: class Solution { public int wiggleMaxLength(int[] nums) { int len=0; for(int i=0,next = i; i<nums 阅读全文
摘要:
题目链接:649. Dota2 参议院 思路:题目假设每个人能够作出最优决定,那么,当前参议员能够作出决定时,他一定是禁用他下一位另一派的参议员,这样才能保证己方能够处于优势地位。那么设banOfR和banOfD分别为R和D被禁的人数,每次遍历只需判断当前数是否有权利,没有权利说明他被上一位其他派的 阅读全文
摘要:
题目链接:842. 将数组拆分成斐波那契序列 思路:暴力遍历。从长度为1开始,初始化n1、n2、n3,当n1+n2!=n3时,n3长度加1,直到超出字符串长度的一半;当n1+n2==n3时,令n1=n2,n2=n3,然后获取n3的值,并重新判断呢n1+n2是不是等于n3. 代码: class Sol 阅读全文
摘要:
题目链接: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( 阅读全文