LeetCode
Leeli9316
这个作者很懒,什么都没留下…
展开
-
2022.07.19(LC_剑指 Offer II 041. 滑动窗口的平均值)
由于数字进入滑动窗口和移出滑动窗口的规则符合先进先出,因此可以使用队列存储滑动窗口中的数字,同时维护滑动窗口的大小以及滑动窗口的数字之和。原创 2022-07-19 11:25:18 · 169 阅读 · 0 评论 -
2022.05.17(LC_1046_最后一块石头的重量)
方法:class Solution { public int lengthOfLastWord(String s) { String str = s.trim(); int res = 0; for (int i = str.length() - 1; i >= 0; i--) { if (str.charAt(i) == ' ') break; res++; } ..原创 2022-05-17 22:35:12 · 106 阅读 · 0 评论 -
2022.04.30(LC_1013_将数组分成和相等的三个部分)
方法:模拟class Solution { public boolean canThreePartsEqualSum(int[] arr) { int sum = 0; for (int num : arr) { sum += num; } if (sum % 3 != 0) return false; int temp = 0; int count = 0; ...原创 2022-04-30 22:04:50 · 275 阅读 · 0 评论 -
2022.04.27(LC_剑指 Offer 45. 把数组排成最小的数)
方法:排序class Solution { public String minNumber(int[] nums) { int n = nums.length; String[] numbers = new String[n]; for (int i = 0; i < nums.length; i++) { numbers[i] = String.valueOf(nums[i]); } ..原创 2022-04-27 15:52:03 · 100 阅读 · 0 评论 -
2022.04.27(LC_179_最大数)
方法:排序class Solution { public String largestNumber(int[] nums) { int n = nums.length; String[] numbers = new String[n]; for (int i = 0; i < nums.length; i++) { numbers[i] = String.valueOf(nums[i]); }..原创 2022-04-27 15:40:45 · 129 阅读 · 0 评论 -
2022.04.23(LC_1024_视频拼接)
方法:贪心class Solution { public int videoStitching(int[][] clips, int time) { //按左端点升序排列(左端点相同时,按右端点降序排列) Arrays.sort(clips, (o1, o2) -> { if (o1[0] == o2[0]) return o2[1] - o1[1]; return o1[0] - o2[0]; ..原创 2022-04-23 22:24:31 · 385 阅读 · 0 评论 -
2022.04.19(LC_605_种花问题)
方法:贪心class Solution { public boolean canPlaceFlowers(int[] flowerbed, int n) { //特判 if (n == 0) return true; int len = flowerbed.length; //只有一个地块 if (len == 1) { //此时 n = 1 if (flowe...原创 2022-04-19 15:56:15 · 80 阅读 · 0 评论 -
2022.04.19(LC_409_最长回文串)
方法:计数class Solution { public int longestPalindrome(String s) { Map<Character, Integer> map = new HashMap<>(); for (char ch : s.toCharArray()) { map.put(ch, map.getOrDefault(ch, 0) + 1); } in...原创 2022-04-19 11:35:15 · 59 阅读 · 0 评论 -
2022.04.17(LC_6071_完成所有任务需要的最少轮数)
方法:模拟class Solution {public int minimumRounds(int[] tasks) { Map<Integer, Integer> map = new HashMap<>(); for (int task : tasks) { map.put(task, map.getOrDefault(task, 0) + 1); } int ans = 0; ...原创 2022-04-17 16:43:32 · 276 阅读 · 0 评论 -
2022.04.17(LC_6070_计算字符串的数字和)
方法:递归模拟class Solution { public String digitSum(String s, int k) { if (s.length() <= k) return s; String temp = ""; for (int i = 0; i < s.length(); i += k) { int x = 0; for (int j = i; j < i...原创 2022-04-17 16:41:30 · 157 阅读 · 0 评论 -
2022.04.10(LC_6039_K 次增加后的最大乘积)
方法:优先队列(使用小顶堆)class Solution { public int maximumProduct(int[] nums, int k) { PriorityQueue<Integer> pq = new PriorityQueue<>(); int mod = 1000000007; for (int num : nums) { pq.offer(num); }...原创 2022-04-10 16:43:14 · 141 阅读 · 0 评论 -
2022.04.10(LC_6038_向表达式添加括号后的最小结果)
方法:模拟class Solution { public String minimizeResult(String expression) { int pos = expression.indexOf('+'); int n = expression.length(); int minVal = Integer.MAX_VALUE; int left = 0, right = 0; for (int i = ...原创 2022-04-10 16:41:17 · 159 阅读 · 0 评论 -
2022.04.10(LC_6037_按奇偶性交换后的最大数字)
方法:分组 + 排序class Solution { public int largestInteger(int num) { List<Integer> ji = new ArrayList<>(); List<Integer> ou = new ArrayList<>(); String number = "" + num; for (int i = 0; i < n...原创 2022-04-10 16:38:57 · 155 阅读 · 0 评论 -
2022.04.03(LC_5219_每个小孩最多能分到多少糖果)
方法:二分class Solution { public int maximumCandies(int[] candies, long k) { long sum = 0, max = candies[0]; for (int c : candies) { sum += c; max = Math.max(max, c); } if (sum < k) return 0;...原创 2022-04-03 16:27:57 · 173 阅读 · 0 评论 -
2022.04.03(LC_5235_找出输掉零场或一场比赛的玩家)
方法:设置标志位+计数class Solution { public List<List<Integer>> findWinners(int[][] matches) { List<List<Integer>> ans = new ArrayList<>(); boolean[] flag = new boolean[100001]; int[] counter = new int...原创 2022-04-03 16:25:46 · 172 阅读 · 0 评论 -
2022.04.03(LC_6055_转化时间需要的最少操作数)
方法:模拟class Solution { public int cal(String time) { return Integer.parseInt(time.substring(0, 2)) * 60 + Integer.parseInt(time.substring(3, 5)); } public int convertTime(String current, String correct) { int dif = cal(corr...原创 2022-04-03 16:22:04 · 177 阅读 · 0 评论 -
2022.03.30(LC_2028_找出缺失的观测数据)
方法:模拟构造(由于只需要找到一种答案,利用整除与求余)class Solution { public int[] missingRolls(int[] rolls, int mean, int n) { int m = rolls.length; int sum = mean * (m + n); int mSum = 0; for (int roll : rolls) { mSum += roll...原创 2022-03-30 11:03:54 · 90 阅读 · 0 评论 -
2022.03.30(LC_172_阶乘后的零)
方法一:数学class Solution { public int trailingZeroes(int n) { int ans = 0; for (int i = 5; i <= n; i += 5) { int N = i; while (N % 5 == 0) { ans++; N /= 5; } ...原创 2022-03-30 10:59:38 · 81 阅读 · 0 评论 -
2022.03.23(LC_557_反转字符串中的单词 III)
方法:模拟class Solution { public String reverseWords(String s) { String[] words = s.split(" "); int n = words.length; StringBuilder sb = new StringBuilder(); sb.append(reverse(words[0])); for (int i = 1; i <...原创 2022-03-23 16:12:57 · 92 阅读 · 0 评论 -
2022.03.22(LC_2038_如果相邻两个颜色均相同则删除当前颜色)
方法:贪心class Solution { public boolean winnerOfGame(String colors) { int n = colors.length(); if (n < 3) return false; char[] cArray = colors.toCharArray(); int count = 0; for (int i = 1; i < n - 1...原创 2022-03-22 16:07:04 · 61 阅读 · 0 评论 -
2022.03.21(LC_167_两数之和 II - 输入有序数组)
方法一:双指针class Solution { public int[] twoSum(int[] numbers, int target) { int left = 0, right = numbers.length - 1; while (left < right) { if (numbers[left] + numbers[right] == target) { return new int..原创 2022-03-21 11:21:21 · 180 阅读 · 0 评论 -
2022.03.21(LC_653_两数之和 IV - 输入 BST)
方法一:哈希表/** * 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, TreeNode..原创 2022-03-21 10:57:27 · 165 阅读 · 0 评论 -
2022.03.17(LC_21_合并两个有序链表)
方法一:迭代/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = n...原创 2022-03-17 15:15:27 · 1201 阅读 · 0 评论 -
2022.03.14(LC_393_UTF-8 编码验证)
方法:位运算class Solution { public boolean validUtf8(int[] data) { int n = 0; for (int i = 0; i < data.length; i++){ if (n > 0){ if (data[i] >> 6 != 0b10) return false; n--; ...原创 2022-03-14 17:06:16 · 41 阅读 · 0 评论 -
2022.03.13(LC_6031_找出数组中的所有 K 近邻下标)
方法:暴力求解class Solution { public List<Integer> findKDistantIndices(int[] nums, int key, int k) { List<Integer> res = new ArrayList<>(); List<Integer> pos = new ArrayList<>(); int n = nums.length...原创 2022-03-13 17:20:07 · 57 阅读 · 0 评论 -
2022.03.06(LC_6018_根据描述创建二叉树)
/** * 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, TreeNode right...原创 2022-03-06 16:29:04 · 246 阅读 · 0 评论 -
2022.03.06(LC_6017_向数组中追加 K 个整数)
class Solution { public long minimalKSum(int[] nums, int k) { //使用TreeSet排序并去重 Set<Integer> set = new TreeSet<>(); for (int num : nums) { set.add(num); } long res = 0; //从1开始...原创 2022-03-06 16:27:09 · 135 阅读 · 0 评论 -
2022.03.03(LC_258_各位相加)
方法一:模拟class Solution { public int addDigits(int num) { if (String.valueOf(num).length() == 1) return num; int res = cal(num); while (String.valueOf(res).length() != 1) { res = cal(res); } return...原创 2022-03-03 20:21:57 · 53 阅读 · 0 评论 -
2022.03.01(LC_6_Z 字形变换)
解题思路:模拟行索引的变化,在遍历字符串的过程中把每个字符拼接到正确的行。class Solution { public String convert(String s, int numRows) { //特判 if (numRows < 2) return s; //新建StringBuilder数组并初始化,数组中每一个StringBuilder进行每一行的字符拼接 StringBuilder[] rows = ne..原创 2022-03-01 20:01:47 · 89 阅读 · 0 评论 -
2022.02.26(LC_2016_增量元素之间的最大差值)
解题思路:前缀最小值——边遍历边维护左侧最小值。class Solution { public int maximumDifference(int[] nums) { int maxDifference = -1; int n = nums.length; int minNum = nums[0]; for (int i = 1; i < n; i++) { if (nums[i] > mi..原创 2022-02-26 22:22:09 · 182 阅读 · 0 评论 -
2021.10.18(LC_2042_检查句子中的数字是否递增)
解题思路:根据空格将字符串分组,遍历字符串数组,当遇到数字时,与前一个数字进行比较。class Solution { public boolean areNumbersAscending(String s) { // 根据空格将字符串分组 String[] tokens = s.split(" "); int preNum = 0; // 遍历字符串数组,当遇到数字时,与前一个数字进行比较 for (Stri...原创 2021-10-18 21:27:23 · 143 阅读 · 0 评论 -
2021.10.08(LC_187_重复的 DNA 序列)
方法:哈希表class Solution { public List<String> findRepeatedDnaSequences(String s) { int n = s.length(); List<String> res = new ArrayList<>(); if (s == null || n == 0) return res; Map<String, Intege...原创 2021-10-08 21:45:08 · 51 阅读 · 0 评论 -
2021.9.28(LC_2017_网格游戏)
方法:前缀和class Solution { public long gridGame(int[][] grid) { int n = grid[0].length; //定义一个统计前缀和的二维数组preSum[2][n + 1](2行n+1列),对每一行的数从左至右进行累加 //技巧:将二维数组的列数定义为 n+1,不使用首个位置0,从第二位1开始使用,从而符合习惯 //即preSum[i][1] 统计前一位的和,pre...原创 2021-09-28 21:46:43 · 119 阅读 · 0 评论 -
2021.9.27(LC_633_平方数之和)
方法:双指针class Solution { public boolean judgeSquareSum(int c) { long a = 0; long b = (long) Math.sqrt(c); while (a <= b) { long sum = a * a + b * b; if (sum == c) { return true; ..原创 2021-09-27 20:21:51 · 51 阅读 · 0 评论