Leetcode
FanZheGOGOGO
莫道桑榆晚,为霞尚满天!!我正在努力,希望有一天,我可以大声喊出,我终于看到所有梦想都开花!
展开
-
滑动窗口模板
滑动窗口模板分解特殊情况判断申请一个散列,用于记录窗口中每一个元素个数int[] need=new int[128];定义左指针、记录条件的变量与结果集int left=0,count=..,result=..;开始滑动窗口,i可代替右指针for(int i=0;i<S.length;i++){更新新元素在散列中的数量need[sArr[i]]--;根据窗口的变更结果来改变条件值if(need[sArr[i]] == > < ){coun原创 2020-11-23 21:04:53 · 2912 阅读 · 0 评论 -
java 数据结构与算法之每日一道LeetCode做题记录
准备刷的专题块:哈希表(按照频率刷题)1、12、7713、34、1365、5356、1387、858、2029、14910、4911、46312、73913、7614、3715、34716、33617、21918、1819、21720、36原创 2020-11-05 10:20:40 · 1011 阅读 · 11 评论 -
2019蓝桥杯第十届JavaB组
2019年javaB组蓝桥杯试题A:组队题目描述作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容。每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少?答案:490试题B.不同的子串:一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 个。注意在计算时,只算本质不同原创 2021-03-23 21:04:38 · 490 阅读 · 4 评论 -
2020蓝桥杯第十一届JavaB组
试题 A: 门牌制作(5分)【问题描述】小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个字符 0, 2 个字符 1, 1 个字符 7。请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整原创 2021-03-23 19:12:07 · 664 阅读 · 0 评论 -
LeetCode动态规划六之最小路径和64
动态规划 public static int minPathSum(int[][] grid) { if (grid == null || grid.length == 0 || grid[0].length == 0) { return 0; } for (int i = 0; i <grid.length ; i++) { for (int j = 0; j <grid[0].lengt.原创 2021-02-17 14:29:58 · 84 阅读 · 0 评论 -
LeetCode动态规划五之判断子序列392
暴力解法public static boolean isSubsequence(String s, String t) { if (s.length()==0) return true; if (t.length()==0) return false; char c=s.charAt(0); int n=0; for (int i = 0; i < t.length(); i++) { char.原创 2021-02-17 11:38:53 · 114 阅读 · 0 评论 -
LeetCode动态规划四之打家劫舍198&面试题17.16.按摩师
打家劫舍面试题17.16.按摩师解题public static int massage(int[] nums) { int n=nums.length; //特殊 if (n==0) return 0; if (n==1) return nums[0]; int[][] dp=new int[n][2]; dp[0][0]=0; dp[0][1]=nums[0];原创 2021-02-16 23:36:17 · 143 阅读 · 0 评论 -
LeetCode动态规划三之最长的回文子串5
动态规划 public static String longestPalindrome(String s) { int n=s.length(); boolean[][] dp=new boolean[n][n]; String Sr=""; for (int l = 0; l <n ; l++) { for (int i = 0; i+l < n; i++) { i.原创 2021-02-09 23:21:44 · 156 阅读 · 2 评论 -
LeetCode动态规划二之爬楼梯70
动态规划 public static int climbStairs(int n) { if (n==1) return 1; int[] nums=new int[n+1]; nums[0]=0;nums[1]=1;nums[2]=2; for (int i = 3; i <= n; i++) { nums[i]=nums[i-1]+nums[i-2]; } return.原创 2021-02-09 15:53:39 · 87 阅读 · 0 评论 -
LeetCode动态规划一之最大子序和53
动态规划 public static int maxSubArray(int[] nums) { int temp=0,maxM=nums[0]; for (int x:nums){ temp=Math.max(temp+x,x); maxM=Math.max(maxM,temp); } return maxM; }学以致用更新每一次数组元素,上次一加当前元素与当前元素.原创 2021-02-09 11:27:01 · 81 阅读 · 0 评论 -
LeetCode之 动态规划总结
动态规划什么情况下可以用到动态规划问题(求所有,不用)1、求最大值/最小值(从左上角到右上角路径的最大数字和、最长上升子序列长度)2、求方案数(有多少种方式走到右下角、有多少种方法选出K个数使得和是Sum)3、求存在性(取石子游戏,先手是否必胜;能不能选出K个数使得和是Sum)动态规划四步解题法1、确定状态2、状态方程3、初始条件和边界情况4、计算顺序举例说明解法你有三种硬币,分别面值2元,5元和7元,每种硬币都有足够多。买一本书需要27元。如何用最少的硬币组合正好付清,不原创 2021-02-08 20:02:41 · 194 阅读 · 2 评论 -
LeetCode数组二之最大子序和53
数组public static void main(String[] args) { int[] nums=new int[]{-2,1}; System.out.println(maxSubArray(nums)); } public static int maxSubArray(int[] nums) { if (nums.length==1) return nums[0]; int sums,sum = nums[0].原创 2021-02-08 18:15:22 · 93 阅读 · 0 评论 -
LeetCode数组一之两数之和1
数组 public int[] twoSum(int[] nums, int target) { int[] result=new int[2]; for (int i = 0; i < nums.length; i++) { int temp=target-nums[i]; for (int j = i+1; j < nums.length; j++) { if (temp.原创 2021-02-08 14:46:38 · 111 阅读 · 0 评论 -
LeetCode第十九天栈之逆波兰表达式150
判断字符串是否为数字正则表达式 public static boolean isNumber2(String s){ Pattern pattern=Pattern.compile("-?[0-9]+"); Matcher isNum=pattern.matcher(s); if (!isNum.matches()) return false; return true; }java内置函...原创 2020-12-12 20:25:03 · 115 阅读 · 2 评论 -
leetcode第十八天栈之字符串解码394
栈public static String removeDuplicateLetters(String s) { if (s==null) return ""; Deque<Character> stack=new ArrayDeque<>(); Map<Character,Integer> hash=new HashMap<>(); for (int i = 0; i < s.leng.原创 2020-12-11 20:31:03 · 118 阅读 · 1 评论 -
LeetCode第十八天栈之去除重复字母316
官网解释说明是字典序最小:首先要知道什么叫 “字典序”。字符串之间比较跟数字之间比较是不太一样的。字符串比较是从头往后一个字符一个字符比较的。哪个字符串大取决于两个字符串中 第一个对应不相等的字符 。根据这个规则,任意一个以 a 开头的字符串都大于任意一个以 b 开头的字符串。单调栈 public static String removeDuplicateLetters(String s) { if (s==null) return ""; Deque<.原创 2020-12-09 21:30:18 · 269 阅读 · 3 评论 -
LeetCode第十七天栈之最短无序连续子数组581
暴力+栈 public static int findUnsortedSubarray(int[] nums) { int[] results=new int[nums.length]; for (int i = 0; i < nums.length; i++) { results[i]=nums[i]; } Arrays.sort(results); Deque<Integer&g.原创 2020-12-08 20:42:49 · 410 阅读 · 10 评论 -
LeetCode第十七天栈之移掉K位数字402(多解:StringBuilder&&栈)
学有所思写这个题的时候我觉得这个题很简单,示例一的用例没有问题,到了用例二三就相继出问题!开始想着找一个数据结构,能够把它存下来,然后强转字符串输出,于是我用到栈,将栈中数字转为字符串并输出,输出结果:[1,2,1,9],答案并不理想。于是同学给我提醒用StringBuilder,可变的字符序列。可以删除、追加,我想我找到了我要的数据类型了!StringBuilder public static String removeKdigits(String num, int k) { .原创 2020-12-08 18:55:35 · 234 阅读 · 0 评论 -
LeetCode第十七天栈之柱状图中最大的矩形84(多解:暴力+栈+哨兵)
暴力解法从0开始遍历,每一次向两边扩散记录当前可扩散的最大面积返回遍历结束后最大面积 public static int largestRectangleArea(int[] heights) { if (heights==null) return 0; int number,max=0; for (int i=0;i<heights.length;i++){ number=1; fo..原创 2020-12-06 21:27:31 · 167 阅读 · 1 评论 -
LeetCode第十六天栈之接雨水42多解
栈 public static int trap(int[] height) { int results=0; Deque<Integer> stack=new ArrayDeque<>(); for (int i=0;i<height.length;i++){ while(!stack.isEmpty()&&height[stack.peek()]<height[i]){.原创 2020-12-05 21:39:03 · 220 阅读 · 0 评论 -
LeetCode第十六天 栈之股票价格跨度901
栈之股票价格跨度901 Deque<Integer> prices,number; public StockSpanner() { prices=new ArrayDeque<>(); number=new ArrayDeque<>(); } public int next(int price) { int result=1; while (!prices.isEmpty..原创 2020-12-05 18:06:05 · 159 阅读 · 0 评论 -
LeetCode第十六天栈之下一个更大元素I 496
栈 public int[] nextGreaterElement(int[] nums1, int[] nums2) { int[] results=new int[nums1.length]; Map<Integer,Integer> hash=new HashMap<>(); Deque<Integer> stack=new ArrayDeque<>(); for (int i=0.原创 2020-12-05 17:32:46 · 147 阅读 · 0 评论 -
LeetCode第十五天栈之每日温度739
栈 public int[] dailyTemperatures(int[] T) { Deque<Integer> stack=new ArrayDeque<>(); int[] results=new int[T.length]; for (int i=0;i<T.length;i++){ //若当日温度大于栈顶温度 //出栈并且记录其与当日的天数差,存放于结果集中.原创 2020-12-04 20:36:53 · 195 阅读 · 0 评论 -
LeetCode栈之最小栈155
栈public class StackMin { Deque<Integer> Stack; Deque<Integer> minStack; /** initialize your data structure here. */ public StackMin() { Stack=new LinkedList<>(); minStack=new LinkedList<>(); .原创 2020-12-04 19:56:51 · 211 阅读 · 0 评论 -
LeetCode栈之有小括号20
栈方法一 public static boolean isValid(String s) { if (s==null||s.length()==0) return true; if (s.length()%2==1) return false; Map<Character,Character> gz=new HashMap<>(){{ put(')','('); put('}',.原创 2020-11-30 20:42:16 · 209 阅读 · 4 评论 -
leetcode滑动窗口模板之k个不同整数的子数组992
滑动窗口 public static int subarraysWithKDistinct(int[] A, int K) { if (A==null||A.length<K) return 0; int[] hash=new int[A.length+1]; int l=0,result=1,count=0; int results=0; for (int r=0;r<A.length;r++){ .原创 2020-11-27 11:16:05 · 210 阅读 · 4 评论 -
leetcode滑动窗口模板之字符串的排列567
滑动窗口public boolean checkInclusion(String s1, String s2) { if (s1.length()>s2.length()) return false; char[] s1Arr=s1.toCharArray(); char[] s2Arr=s2.toCharArray(); int[] hash=new int[128]; for (char c:s1Arr) hash.原创 2020-11-25 21:15:05 · 219 阅读 · 1 评论 -
leetcode滑动窗口模板之替换后的最长重复字符424
滑动窗口 public static int characterReplacement(String s, int k) { if (s==null||s.length()==0) return 0; char[] sArr=s.toCharArray(); int[] hash=new int[128]; int l=0,max=1; int results=1; for (int r=0;r<.原创 2020-11-25 20:51:10 · 175 阅读 · 0 评论 -
leetcode滑动窗口模板之找到字符串中所有字母异位词438
滑动窗口 public static List<Integer> findAnagrams(String s, String p) { if (s==null||s.length()==0||s.length()<p.length()) return new ArrayList<>(); char[] sArr=s.toCharArray(); char[] pArr=p.toCharArray(); i.原创 2020-11-24 21:36:46 · 208 阅读 · 2 评论 -
leetcode滑动窗口模板之最小覆盖子串76
滑动窗口 public static String minWindow(String s, String t) { if (s==null||t==null||s.length()<t.length()) return ""; char[] sArr=s.toCharArray(); char[] tArr=t.toCharArray(); int[] hash=new int[128]; for (char c:t.原创 2020-11-24 20:58:26 · 166 阅读 · 0 评论 -
leetcode滑动窗口模板之无重复字符的最长子串3
滑动窗口 public static void main(String[] args) {System.out.println(lengthOfLongestSubstring(null));} public static int lengthOfLongestSubstring(String s) { if(s==null||s.length()==0) return 0; char[] sArr=s.toCharArray(); int[].原创 2020-11-24 20:23:16 · 211 阅读 · 0 评论 -
Leetcode第十天之找到字符串中所有字母异位词438
滑动窗口 public static List<Integer> findAnagrams(String s, String p) { int slen=s.length(); int plen=p.length(); //处理特殊情况 if (slen==0||plen==0||slen<plen) return new ArrayList<>(); //定义返回结果集 Arr.原创 2020-11-23 20:12:26 · 147 阅读 · 0 评论 -
leetcode第九天之替换后的最长重复字串424
滑动窗口public static int characterReplacement(String s, int k) { //规定特殊情况 if (s == null) { return 0; } char[] cs = s.toCharArray(); //设定一个26长度的数组,给窗口内出现的字母计数 int[] map = new int[26]; //左窗..原创 2020-11-17 21:23:54 · 230 阅读 · 0 评论 -
Leetcode第八天之 无重复字符串的最长字串3(滑动窗口)
滑动窗口 public static int lengthOfLongestSubstring(String s) { if (s==null) return 0; Set<Character> set=new HashSet<>(); //窗口长度 int len=s.length(); //左右窗口 .原创 2020-11-16 20:07:30 · 194 阅读 · 5 评论 -
leetcode第七天之前K个高频元素347
哈希表public static int[] topKFrequent(int[] nums, int k) { Map<Integer,Integer> map=new HashMap<>(); for (int num:nums){ map.put(num,map.getOrDefault(num,0)+1); } // 记录元素出现的最多次数 int maxTime=0;.原创 2020-11-16 18:41:52 · 180 阅读 · 0 评论 -
LeetCode第七天之最小覆盖字串76
滑动窗口之加法public static String minWindow(String s, String t) { int sLen=s.length(); int tLen=t.length(); //处理特殊情况 if (sLen==0||tLen==0||sLen<tLen) return ""; char[] charArrayS=s.toCharArray(); .原创 2020-11-13 21:05:07 · 197 阅读 · 0 评论 -
leetcade第六天之字母异位词分组49
哈希表public static List<List<String>> groupAnagrams(String[] strs) { if (strs.length==0) return new ArrayList<>(); //用来存储字母相同对应的不同字符串 Map<String,List> map=new HashMap<>(); for (String s:strs){ .原创 2020-11-09 21:12:01 · 326 阅读 · 0 评论 -
Leetcode第六天之快乐数202
理解一个数的快乐过程用官方的图来给大家解释:这是快乐的数这是被困于自生,无法快乐的数我们不禁会去想,一个数一直平方和一直平方和,会不会无穷大?告诉你,还真的不会大到无穷大。可以看出,四位数会跳回三位数,更有说服力的是,最大的13位数,会跳回四位数。附:运行截图所以我想到了哈希表的去重,那么来吧!还有就是:原谅我最近都在主用哈希表解决问题,因为我在刷哈希表模块的题!哈希表开始用了递归,但是涉及到层数太多,就直接while循环了!public static boolean .原创 2020-11-09 19:46:51 · 329 阅读 · 3 评论 -
Leetcode第五天之复制带随机指针的链表(138)
新建Node实体类public class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.random = null; }}哈希表 public static Node copyRandomList(Node head) { ..原创 2020-11-08 14:29:40 · 1768 阅读 · 18 评论 -
Leetcode第四天之TinyURL的加密与解密(535)
哈希表 private final char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray(); private final Map<String, String> urlMap = new HashMap<>(); private final Random random = new Random(); // Encode.原创 2020-11-06 09:23:18 · 304 阅读 · 4 评论