LeetCode刷题
不试一下怎么知道
傻不愣登的编程小白
展开
-
1109. 航班预订统计(Medium)
题目题目及示例我的题解class Solution { public int[] corpFlightBookings(int[][] bookings, int n) { int[] diff = new int[n]; for (int[] booking : bookings) { diff[booking[0] - 1] += booking[2]; if (booking[1] < n){原创 2021-11-12 19:31:44 · 634 阅读 · 0 评论 -
438. 找到字符串中所有字母异位词(Medium)
题目题目及示例我的题解public List<Integer> findAnagrams(String s, String p) { List<Integer> result = new ArrayList<>(); int pLen = p.length(); int sLen = s.length(); if (pLen > sLen) { return result; } int[]原创 2021-11-13 10:30:00 · 135 阅读 · 0 评论 -
567. 字符串的排列(Medium)
题目题目及示例我的题解class Solution { public boolean checkInclusion(String s1, String s2) { int left = 0; int right = 0; // 记录s1字母 int[] fre = new int[26]; Set<Integer> flag = new HashSet<>(); f原创 2021-11-12 09:19:10 · 355 阅读 · 0 评论 -
76. 最小覆盖子串(Hard)
题目题目及示例我的题解 - 滑动窗口class Solution { public String minWindow(String s, String t) { String result = ""; int left = 0; int right = 0; // 统计 t 中字母出现的频率 Map<Character, Integer> fre = new HashMap<>()原创 2021-11-12 00:15:00 · 318 阅读 · 0 评论 -
560. 和为 K 的子数组(Medium)
题目题目及示例我的题解解法一:前缀和+暴力遍历class Solution { int subarraySum(int[] nums, int k) { int n = nums.length; int[] preSum = new int[n + 1]; preSum[0] = 0; for (int i = 0; i < n; i++) { preSum[i + 1] = preSum[i] +原创 2021-11-09 00:45:00 · 3900 阅读 · 0 评论 -
304. 二维区域和检索 - 矩阵不可变(Medium)
题目题目及示例我的题解 - 前缀和法class NumMatrix { int[][] preSum; public NumMatrix(int[][] matrix) { preSum = new int[matrix.length + 1][matrix[0].length + 1]; for (int i = 1; i <= matrix.length; i++) { for (int j = 1; j <=原创 2021-11-09 01:00:00 · 98 阅读 · 0 评论 -
303. 区域和检索 - 数组不可变(Easy)
题目题目及示例我的题解解法一:傻瓜解法class NumArray { private int[] result; public NumArray(int[] nums) { this.result = nums; } public int sumRange(int left, int right) { int sum = 0; for (int i = left; i < right; i++) {原创 2021-11-08 21:15:00 · 3998 阅读 · 0 评论 -
1402. 做菜顺序(Hard)
题目题目及示例我的题解将所有的菜按照喜爱度从小到大排序,算出全部做出来的结果标志为base state。然后观察可以发现,每减少一道菜,结果=上次的结果-(全部菜喜爱度-减少了的菜的喜爱度)。这样就可以算出来,完全是数学解法。 public int maxSatisfaction(int[] satisfaction) { Arrays.sort(satisfaction); if (satisfaction[satisfaction.length - 1] &原创 2021-10-29 11:58:59 · 55 阅读 · 0 评论 -
剑指 Offer II 055. 二叉搜索树迭代器(Easy)
题目题目及示例我的题解/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNo原创 2021-10-14 16:21:08 · 85 阅读 · 0 评论 -
1276. 不浪费原料的汉堡制作方案(Medium)
题目题目及示例我的题解解方程class Solution { public List<Integer> numOfBurgers(int tomatoSlices, int cheeseSlices) { List<Integer> result = new ArrayList<>(); if (tomatoSlices % 2 != 0 || tomatoSlices > 4 * cheeseSlices || to原创 2021-06-30 20:40:27 · 78 阅读 · 0 评论 -
781. 森林中的兔子(Medium)
题目题目及示例我的题解脑筋急转弯题。比如说1的兔子不能超过两个,超过了的是别的颜色,按照这个思路解即可。class Solution { public int numRabbits(int[] answers) { Arrays.sort(answers); int curAns = answers[0]; // 上一个兔子的答案 int sameAnsCnt = 1; // 与上一个兔子答案相同的答案数量 int res =原创 2021-06-29 20:43:08 · 51 阅读 · 0 评论 -
168. Excel表列名称(Easy)
题目题目及示例我的题解class Solution { public String convertToTitle(int columnNumber) { String str = ""; while (columnNumber != 0) { columnNumber--; str = (char) (columnNumber % 26 + 'A') + str; columnNumber原创 2021-06-29 20:18:30 · 85 阅读 · 0 评论 -
1913. 两个数对之间的最大乘积差(Easy)
题目题目及示例我的题解class Solution { public int maxProductDifference(int[] nums) { Arrays.sort(nums); return nums[nums.length - 1] * nums[nums.length - 2] - nums[0] * nums[1]; }}原创 2021-06-29 20:06:14 · 87 阅读 · 0 评论 -
1047. 删除字符串中的所有相邻重复项(Easy)
题目题目及示例我的题解class Solution { public String removeDuplicates(String s) { Stack<Character> stack = new Stack<>(); stack.push(s.charAt(0)); for (int i = 1; i < s.length(); i++) { char thisChar = s.char原创 2021-06-22 09:44:31 · 46 阅读 · 0 评论 -
852. 山脉数组的峰顶索引(Easy)
题目题目及示例我的题解两头找变化趋势不同的值,可加速。class Solution { public int peakIndexInMountainArray(int[] arr) { for (int i = 0; i < arr.length; i++) { if (arr[i] > arr[i + 1]) { return i; } if (arr[arr原创 2021-06-15 20:38:07 · 77 阅读 · 1 评论 -
1893. 检查是否区域内所有整数都被覆盖(Easy)
题目题目及示例我的题解class Solution { public boolean isCovered(int[][] ranges, int left, int right) { int[] numFre = new int[51]; for (int i = left; i <= right; i++) { numFre[i] = 1; } for (int[] r : ranges) {原创 2021-06-15 09:52:51 · 127 阅读 · 0 评论 -
1899. 合并若干三元组以形成目标三元组(Medium)
题目题目及示例我的题解triplets中的数组一一与target中对比,如果有大于target的数,则不能加入运算;如果有等于target的数,则可以确定在target中的位置。class Solution { public boolean mergeTriplets(int[][] triplets, int[] target) { boolean[] confirmed = new boolean[3]; for (int[] triplet : trip原创 2021-06-15 09:45:58 · 137 阅读 · 0 评论 -
1897. 重新分配字符使所有字符串都相等(Easy)
题目题目及示例我的题解记录每个字母出现的频率,除以单词数量看能否除尽。class Solution { public boolean makeEqual(String[] words) { int[] charFre = new int[26]; for (String word : words) { for (int j = 0; j < word.length(); j++) { charFre原创 2021-06-15 09:31:20 · 94 阅读 · 0 评论 -
1381. 设计一个支持增量操作的栈(Medium)
题目题目及示例我的题解解题时考虑到是否弹出后栈顶为空,所以采用ArrayList数据;然而,题目没有要求弹出后栈顶为空,所以使用数组更快更省地儿。class CustomStack { List stack; int stackSize; int index = 0; public CustomStack(int maxSize) { stackSize = maxSize; stack = new ArrayList(stackSi原创 2021-06-09 17:29:50 · 79 阅读 · 1 评论 -
1450. 在既定时间做作业的学生人数(Easy)
题目题目及示例我的题解class Solution { public int busyStudent(int[] startTime, int[] endTime, int queryTime) { int ans = 0; for (int i = 0; i < startTime.length; i++) { if (queryTime >= startTime[i] && queryTime <=原创 2021-06-09 16:44:34 · 39 阅读 · 0 评论 -
面试题 16.20. T9键盘(Medium)
题目题目及示例我的题解每个字母提取出来看是否在键上。class Solution { public List<String> getValidT9Words(String num, String[] words) { List<String> list = new ArrayList<>(); for (int i = 0; i < words.length; i++) { boolean ca原创 2021-06-08 16:55:18 · 114 阅读 · 0 评论 -
1561. 你可以获得的最大硬币数目(Medium)
题目题目及示例我的题解排序,从大往小选两个数,每次选更小的一个即可。class Solution { public int maxCoins(int[] piles) { Arrays.sort(piles); int repeat = piles.length / 3; int ans = 0; for (int i = 0; i < repeat; i++) { ans += piles[pi原创 2021-06-08 14:05:33 · 72 阅读 · 0 评论 -
1614. 括号的最大嵌套深度(Easy)
题目题目及示例我的题解class Solution { public int maxDepth(String s) { int maxDepth = 0; int thisDepth =0; for (int i = 0; i < s.length(); i++) { char thisChar = s.charAt(i); if (thisChar == '(') {原创 2021-06-08 12:08:36 · 38 阅读 · 0 评论 -
657. 机器人能否返回原点(Easy)
题目题目及示例我的题解class Solution { public boolean judgeCircle(String moves) { int x = 0; int y = 0; for (int i = 0; i < moves.length(); i++) { char move = moves.charAt(i); switch (move) { c原创 2021-06-07 19:56:11 · 41 阅读 · 0 评论 -
1227. 飞机座位分配概率(Medium)
题目题目及示例我的题解n等于不同的值推导一下即可。class Solution { public double nthPersonGetsNthSeat(int n) { if (n == 1) { return 1; } else { return 0.5; } }}原创 2021-06-07 19:14:27 · 69 阅读 · 0 评论 -
650. 只有两个键的键盘(Medium)
题目题目及示例我的题解如果n是质数,则只能一个一个复制过去;否则,将概述分解成质数再加上质数的步数class Solution { public int minSteps(int n) { int ans = 0; for (int i = n / 2; i > 0; ) { if (isPrime(n)) { // 如果是质数,直接返回该值 return n +原创 2021-06-07 15:41:21 · 65 阅读 · 0 评论 -
5777. 使数组元素相等的减少操作次数(Medium)
题目题目及示例我的题解class Solution { public int reductionOperations(int[] nums) { Map<Integer, Integer> numFre = new HashMap<>(); int largest = 0; for (int i = 0; i < nums.length; i++) { numFre.put(nums[i],原创 2021-06-06 12:10:28 · 79 阅读 · 0 评论 -
5776. 判断矩阵经轮转后是否一致(Easy)
题目题目及示例我的题解class Solution { public int[][] rotate90(int[][] mat) { int n = mat.length; int[][] ans = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { ans[j][i] = mat原创 2021-06-06 12:09:41 · 71 阅读 · 0 评论 -
1598. 文件夹操作日志搜集器(Easy)
题目题目及示例我的题解使用栈class Solution { public int minOperations(String[] logs) { Stack<String> stack = new Stack<>(); for (int i = 0; i < logs.length; i++) { String thisFolder = logs[i]; switch (thisFo原创 2021-06-04 17:42:13 · 41 阅读 · 0 评论 -
160. 相交链表(Easy)
题目题目及示例我的题解解法一:暴力class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode ha = headA; while (ha != null) { ListNode hb = headB; while (hb != null) { if原创 2021-06-04 16:44:15 · 47 阅读 · 0 评论 -
面试题 16.02. 单词频率(Medium)
题目题目及示例我的题解class WordsFrequency { Map<String, Integer> books = new HashMap<>(); public WordsFrequency(String[] book) { for (String word : book) { books.put(word, books.getOrDefault(word, 0) + 1); } }原创 2021-06-03 20:11:07 · 61 阅读 · 0 评论 -
1365. 有多少小于当前数字的数字(Easy)
题目题目及示例我的题解class Solution { public int[] smallerNumbersThanCurrent(int[] nums) { int[] ans = new int[nums.length]; int[] numFre = new int[101]; for (int i = 0; i < nums.length; i++) { numFre[nums[i]]++;原创 2021-06-03 19:52:27 · 34 阅读 · 0 评论 -
1512. 好数对的数目(Easy)
题目题目及示例我的题解class Solution { public int numIdenticalPairs(int[] nums) { int ans = 0; int[] numFre = new int[101]; for (int i = 0; i < nums.length; i++) { numFre[nums[i]]++; } for (int i = 0; i &原创 2021-06-03 19:39:35 · 66 阅读 · 0 评论 -
559. N 叉树的最大深度(Easy)
题目题目及示例我的题解广度优先搜索(BFS)// Definition for a Node.class Node { public int val; public List<Node> children; public Node() { } public Node(int _val) { val = _val; } public Node(int _val, List<Node> _childr原创 2021-05-31 17:03:04 · 43 阅读 · 0 评论 -
5774. 使用服务器处理任务(Medium)(NF!)
题目题目及示例我的题解看起来很简单一题,卡死在一个用例中,因为该用例过长,debug要老命,先记下这个不成熟的解法,回头静下心来仔细看看。通不过的用例记录一下:[338,890,301,532,284,930,426,616,919,267,571,140,716,859,980,469,628,490,195,664,925,652,503,301,917,563,82,947,910,451,366,190,253,516,503,721,889,964,506,914,986,718,520原创 2021-05-30 12:50:04 · 60 阅读 · 0 评论 -
5773. 插入后的最大值(Medium)
题目题目及示例我的题解如果是正数,就插在比x小的数字前;否则插在比x大的数字前。如果找不到,x都插在最后。class Solution { public String maxValue(String n, int x) { if (n.charAt(0) == '-') { for (int i = 1; i < n.length(); i++) { if (n.charAt(i)-'0' > x) {原创 2021-05-30 12:18:36 · 131 阅读 · 0 评论 -
5772. 检查某单词是否等于两单词之和(Easy)
题目题目及示例我的题解非常暴力,直接算就好。class Solution { public boolean isSumEqual(String firstWord, String secondWord, String targetWord) { int fW = 0; int sW = 0; int tW = 0; for (int i = 0; i < firstWord.length(); i++) {原创 2021-05-30 12:13:58 · 43 阅读 · 0 评论 -
5755. 数组中最大数对和的最小(Medium)
题目题目及示例我的题解排序,最大和最小相加,遍历,得结果。class Solution { public int minPairSum(int[] nums) { int ans = 0; Arrays.sort(nums); for (int i = 0; i < nums.length / 2; i++) { ans = Math.max(ans, nums[i] + nums[nums.length - i原创 2021-05-30 12:10:26 · 83 阅读 · 0 评论 -
5754. 长度为三且各字符不同的子字符串(Easy)
题目题目及示例我的题解class Solution { public int countGoodSubstrings(String s) { int ans = 0; for (int i = 0; i < s.length() - 2; i++) { if (s.charAt(i) != s.charAt(i + 1) && s.charAt(i) != s.charAt(i + 2) &&原创 2021-05-30 12:06:53 · 39 阅读 · 0 评论 -
21. 合并两个有序链表(Easy)
题目题目及示例我的题解class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode ans = new ListNode(); ListNode head = ans; while (l1 != null && l2 != null) { if (l1.val <= l2.val) {原创 2021-05-29 15:39:38 · 46 阅读 · 0 评论