avatar
文章
590
标签
104
分类
17

首页
归档
标签
分类
友链
日志
byu_rself
搜索
首页
归档
标签
分类
友链
日志

byu_rself

LC.P1488[避免洪水泛滥]
发表于2023-10-13|更新于2023-10-13|LeetCode|数组•哈希表•贪心•有序集合
LC.P1488[避免洪水泛滥] 方法一:贪心+哈希表+有序集合12345678910111213141516171819202122232425class Solution { public int[] avoidFlood(int[] rains) { int n = rains.length; int[] ans = new int[n]; Arrays.fill(ans, -1); TreeSet<Integer> sunny = new TreeSet<>(); Map<Integer, Integer> rainy = new HashMap<>(); for (int i = 0; i < n; ++i) { int k = rains[i]; if (k > 0) { if (rainy.containsKey ...
LC.P1201[丑数III]
发表于2023-10-12|更新于2023-10-12|LeetCode|数学•二分查找
LC.P1201[丑数III] 方法一:容斥原理+二分12345678910111213141516171819202122class Solution { public int nthUglyNumber(int n, int a, int b, int c) { long ab = lcm(a, b), ac = lcm(a, c), bc = lcm(b, c), abc = lcm(a, lcm(b, c)); long left = 0, right = (long) Math.min(a, Math.min(b, c)) * n; while (left < right) { long mid = left + right >> 1; if (mid / a + mid / b + mid / c - mid / ab - mid / ac - mid / bc + mid / abc >= n) right = mid; ...
LC.P878[第N个神奇数字]
发表于2023-10-12|更新于2023-10-12|LeetCode|数学•二分查找
LC.P878[第N个神奇数字] 方法一:容斥原理+二分123456789101112131415161718192021class Solution { private static final int MOD = (int) 1e9 + 7; public int nthMagicalNumber(int n, int a, int b) { // 最大公倍数 int c = a * b / gcd(a, b); long left = 0, right = (long) Math.min(a, b) * n; while (left < right) { long mid = left + right >> 1; // 容斥原理 if (mid / a + mid / b - mid / c >= n) right = mid; else left = mid + 1; ...
LC.P2562[找出数组的串联值]
发表于2023-10-12|更新于2023-10-12|LeetCode|数组•模拟
LC.P2562[找出数组的串联值] 方法一:模拟1234567891011class Solution { public long findTheArrayConcVal(int[] nums) { long ans = 0; int n = nums.length; for (int i = 0, j = n - 1; i < j; ++i, --j) { ans += Integer.parseInt(nums[i] + "" + nums[j]); } if (n % 2 == 1) ans += nums[n / 2]; return ans; }} 时间复杂度:$O(nlogM)$,其中$M$为数组中元素的最大值 空间复杂度:$O(logM)$,遍历数组时需要将数组中每个元素转换为字符串
LC.P162[寻找峰值]
发表于2023-10-11|更新于2023-10-12|LeetCode|数组•二分查找
LC.P162[寻找峰值] 方法一:二分1234567891011class Solution { public int findPeakElement(int[] nums) { int left = 0, right = nums.length - 1; while (left < right) { int mid = left + right >>> 1; if (nums[mid] > nums[mid + 1]) right = mid; else left = mid + 1; } return right; }} 时间复杂度:$O(logn)$ 空间复杂度:$O(1)$
LC.P2512[奖励最顶尖的K名学生]
发表于2023-10-11|更新于2023-10-12|LeetCode|数组•哈希表•模拟•排序
LC.P2512[奖励最顶尖的K名学生] 方法一:哈希表+排序12345678910111213141516171819202122class Solution { public List<Integer> topStudents(String[] positive_feedback, String[] negative_feedback, String[] report, int[] student_id, int k) { Set<String> positiveSet = new HashSet<>(List.of(positive_feedback)); Set<String> negativeSet = new HashSet<>(List.of(negative_feedback)); int n = report.length; int[][] arr = new int[n][2]; for (int i = 0; ...
LC.P911[在线选举]
发表于2023-10-10|更新于2023-10-10|LeetCode|数组•哈希表•二分查找
LC.P911[在线选举] 方法一:哈希表+二分查找1234567891011121314151617181920212223242526272829303132class TopVotedCandidate { List<int[]> list = new ArrayList<>(); public TopVotedCandidate(int[] persons, int[] times) { Map<Integer, Integer> map = new HashMap<>(); int max = 0; for (int i = 0; i < persons.length; ++i) { map.merge(persons[i], 1, Integer::sum); if (map.get(persons[i]) >= max) { max = map.g ...
LC.P81[搜索旋转排序数组II]
发表于2023-10-10|更新于2023-10-10|LeetCode|数组•二分查找
LC.P81[搜索旋转排序数组II] 方法一:两次二分1234567891011121314151617181920212223242526272829class Solution { public boolean search(int[] nums, int target) { int n = nums.length; if (n == 1) return nums[0] == target; int left = 0, right = n - 1; // 忽略与 nums[0] 相同的元素,恢复二段性 while (left < right && nums[0] == nums[right]) --right; int idx = right; // 从中间开始找,找到满足 >= nums[0] 的分割点(旋转点) while (left < right) { int mid = ...
LC.P33[搜索旋转排序数组]
发表于2023-10-10|更新于2023-10-10|LeetCode|数组•二分查找
LC.P33[搜索旋转排序数组] 方法一:两次二分1234567891011121314151617181920212223242526class Solution { public int search(int[] nums, int target) { int n = nums.length; if (n == 1) return nums[0] == target ? 0 : -1; int left = 0, right = n - 1; // 从中间开始找,找到满足 >= nums[0] 的分割点(旋转点) while (left < right) { int mid = left + right + 1 >> 1; if (nums[mid] >= nums[0]) left = mid; else right = mid - 1; } ...
LC.P2731[移动机器人]
发表于2023-10-10|更新于2023-10-10|LeetCode|数组•排序
LC.P2731[移动机器人] 方法一:脑筋急转弯+排序123456789101112131415161718class Solution { private static final int MOD = (int) 1e9 + 7; public int sumDistance(int[] nums, String s, int d) { int n = nums.length; long[] arr = new long[n]; for (int i = 0; i < n; ++i) { arr[i] = (long) nums[i] + (s.charAt(i) == 'L' ? -d : d); } Arrays.sort(arr); long ans = 0, sum = 0; for (int i = 0; i < n; ++i) { ans ...
1…141516…59
avatar
byu_rself
努力努力!
文章
590
标签
104
分类
17
Follow Me
最新文章
LC.P416[分割等和子集]2025-04-07
LC.P2874[有序三元组中的最大值II]2025-04-02
LC.P3128[直角三角形]2024-08-02
LCP.P40[心算挑战]2024-08-01
LC.P3115[质数的最大距离]2024-07-02
分类
  • LeetCode546
    • LCP4
    • LCR13
    • 剑指Offer13
    • 面试题2
  • Linux3
  • 后端9
    • CompletableFuture1
标签
GitDFSGolang动态规划记忆化搜索字符串栈数学数组哈希表滑动窗口链表递归图BFS多源BFS双指针树子数组前缀和前缀树字典树Trie子序列区间DP递推模拟枚举字符串哈希二分查找贪心排序负二进制回溯二叉树状态压缩子串迭代随机化后缀和
归档
  • 四月 20252
  • 八月 20242
  • 七月 20241
  • 五月 20243
  • 四月 20242
  • 三月 202410
  • 二月 202410
  • 一月 202414
网站资讯
文章数目 :
590
已运行时间 :
本站总字数 :
289.3k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2023 - 2025 By byu_rself
框架 Hexo|主题 Butterfly
Hi, welcome to my blog!
搜索
数据库加载中