力扣
公子小白呀
红红火火恍恍惚惚嘻嘻哈哈快快乐乐
展开
-
697. 数组的度
给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/degree-of-an-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public int findShortestSubArray原创 2022-02-17 16:45:09 · 154 阅读 · 0 评论 -
661. 图片平滑器
class Solution { public int[][] imageSmoother(int[][] img) { int n = img.length; int m = img[0].length; int[][] res = new int[n][m]; for(int i = 0;i<n;i++){ for(int j = 0;j<m;j++){ int c原创 2022-02-16 12:55:07 · 7752 阅读 · 0 评论 -
605. 种花问题
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/can-place-flowers著作权归领扣网络所有。原创 2022-02-10 16:53:46 · 304 阅读 · 0 评论 -
599. 两个列表的最小索引总和
class Solution { public String[] findRestaurant(String[] list1, String[] list2) { Map<String,Integer> map = new HashMap<String,Integer>(); for(int i = 0;i<list2.length;i++){ map.put(list2[i],i); }原创 2022-02-10 16:21:01 · 275 阅读 · 0 评论 -
594. 最长和谐子序列
和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-harmonious-subsequence著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法一原创 2022-02-09 18:05:00 · 422 阅读 · 0 评论 -
506. 相对名次
方法一复制数组+排序+返回对应下标class Solution { public String[] findRelativeRanks(int[] score) { int n = score.length; int[] newScore = Arrays.copyOf(score,n); Arrays.sort(newScore); String[] res = new String[n]; for(int i =原创 2022-02-09 17:55:57 · 209 阅读 · 0 评论 -
500. 键盘行
class Solution { public String[] findWords(String[] words) { List<String> list = new ArrayList<String>(); for(String str : words){ if(isOK(str)){ list.add(str); } } /* Stri原创 2022-02-09 16:53:23 · 290 阅读 · 0 评论 -
496. 下一个更大元素 I
class Solution { public int[] nextGreaterElement(int[] nums1, int[] nums2) { int n = nums2.length; int[] res = new int[nums1.length]; //Arrays.sort(nums2); for(int i = 0;i<nums1.length;i++){ for(int j = 0;原创 2022-02-08 22:56:10 · 313 阅读 · 0 评论 -
463. 岛屿的周长
给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。来源:力扣(LeetCode)链接:https原创 2022-02-07 22:18:35 · 75 阅读 · 0 评论 -
455. 分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/assign-cookies著作权原创 2022-02-07 21:21:24 · 89 阅读 · 0 评论 -
453. 最小操作次数使数组元素相等
给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。class Solution { public int minMoves(int[] nums) { int res = 0; int sum = 0; int n = nums.length; for(int i = 0;i<n;i++){ sum += nums[i];原创 2022-02-07 19:43:20 · 90 阅读 · 0 评论 -
448. 找到所有数组中消失的数字
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public List<原创 2022-02-07 19:19:03 · 89 阅读 · 0 评论 -
414. 第三大的数
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数方法一首先将数组排序,然后通过集合去除重复的元素,最后进行一次判断,选择第三大元素还是最大元素class Solution { public int thirdMax(int[] nums) { List<Integer> list = new ArrayList<>(); int n = nums.length; int res = 0;原创 2022-02-07 19:03:53 · 69 阅读 · 0 评论 -
349. 两个数组的交集
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set1 = new HashSet<>(); Set<Integer> set2 = new HashSet<>()原创 2022-02-07 17:29:34 · 308 阅读 · 0 评论 -
303. 区域和检索 - 数组不可变(数组前缀和知识应用)
给定一个整数数组 nums,处理以下类型的多个查询:计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 right 两点(也就是 nums[left] + nums原创 2022-02-07 15:15:48 · 209 阅读 · 0 评论 -
268. 丢失的数字
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。方法一:排序class Solution { public int missingNumber(int[] nums) { int n = nums.length; Arrays.sort(nums); for(int i = 0;i<n;i++){ if(nums[i]!=i){原创 2022-02-07 14:44:39 · 268 阅读 · 0 评论 -
228. 汇总区间
class Solution { public List<String> summaryRanges(int[] nums) { List<String> res = new ArrayList<String>(); int i = 0,j = 0; int n = nums.length; if(n==0) return res; while(j<n){原创 2022-02-07 14:16:42 · 171 阅读 · 0 评论 -
力扣回文链表
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。class Solution { public boolean isPalindrome(ListNode head) { List<Integer> res = new ArrayList<Integer>(); ListNode p = head; while(p!=null){ r原创 2022-01-30 17:34:07 · 639 阅读 · 0 评论 -
力扣奇偶链表
给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetbook/read/linked-list/fe0kj/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。思路是原创 2022-01-30 17:01:00 · 506 阅读 · 0 评论 -
1688比赛中的配对次数
给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进入下一轮。返回在比赛中进行的配对次数,直到决出获胜队伍为止。来源:力扣(LeetCode)链接:https://leetcode-cn.com/p原创 2022-01-25 20:23:22 · 63 阅读 · 0 评论 -
力扣494. 目标和
class Solution { int count = 0; public int findTargetSumWays(int[] nums, int target) { backTrack(nums,target,0,0); return count; } public void backTrack(int[] nums,int target,int sum,int index){ if(index == nums.leng原创 2022-01-17 16:26:41 · 168 阅读 · 0 评论 -
825. 适龄的朋友
适龄的朋友在社交媒体网站上有 n 个用户。给你一个整数数组 ages ,其中 ages[i] 是第 i 个用户的年龄。如果下述任意一个条件为真,那么用户 x 将不会向用户 y(x != y)发送好友请求:age[y] <= 0.5 * age[x] + 7age[y] > age[x]age[y] > 100 && age[x] < 100否则,x 将会向 y 发送一条好友请求。注意,如果 x 向 y 发送一条好友请求,y 不必也向 x 发送一条好友.原创 2021-12-27 17:40:38 · 116 阅读 · 0 评论 -
13. 罗马数字转整数
罗马数字转整数class Solution { public int romanToInt(String s) { Map<Character,Integer> map = new HashMap<Character,Integer>(){{ put('I',1); put('V',5); put('X',10); put('L',50);原创 2021-12-25 15:57:09 · 271 阅读 · 0 评论 -
完全平方数
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetbook/read/queue-stack/kfgtt/来原创 2021-12-24 15:56:54 · 146 阅读 · 0 评论 -
力扣打开转盘锁
打开转盘锁评论区大神代码: public int openLock(String[] deadends, String target) { Set<String> set = new HashSet<>(Arrays.asList(deadends)); //开始遍历的字符串是"0000",相当于根节点 String startStr = "0000"; if (set.contains(startStr))原创 2021-12-23 22:01:01 · 3272 阅读 · 0 评论 -
Java字符与数字的计算
先看例子: char ch; int x; int y = '7'; System.out.print("'7'的ASCII码值是:"); System.out.println(y); ch = '7' + 2; System.out.print("'7' + 2的char型:"); System.out.println(ch); x = '7' + 2;原创 2021-12-23 21:20:56 · 801 阅读 · 0 评论 -
字符串连接“+”int、char、string
String s1 = "21" + "8" + "54"; System.out.println(s1); String s2 = "21" + '8' + "54"; System.out.println(s2); String s3 = "21" + 8 + "54"; System.out.println(s3);218542185421854原创 2021-12-23 20:44:43 · 95 阅读 · 0 评论 -
岛屿的数量
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetbook/read/queue-stack/kbcqv/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。代码一思路,DFS。遍历数组,每当遇到原创 2021-12-22 23:24:18 · 197 阅读 · 0 评论 -
1154. 一年中的第几天
给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/day-of-the-year著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution原创 2021-12-21 16:42:35 · 82 阅读 · 0 评论 -
136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。代码一先排序,根据相邻两个相等的特点,遍历找到public int singleNumber(int[] nums) { Arrays.sort(nums); for(int i = 0;i<nums.length-1;i=i+2){ if(nums[i]!=nums[i+1]){ return nums[i原创 2021-12-20 21:50:57 · 75 阅读 · 0 评论 -
19. 删除链表的倒数第 N 个结点
力扣题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。代码一思路是两次遍历,第一次求得一共有多少结点,第二次遍历找到要删除结点的前一个位置,class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { int count = 0; ListNode p = new ListNode(); p = head; //求得一共有多原创 2021-12-20 17:10:57 · 449 阅读 · 0 评论 -
206. 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。代码一:思路:把原链表的结点,从第一个开始,一个个摘下来,用头插法,接到新的链表上class Solution { public ListNode reverseList(ListNode head) { if(head==null){ return head; } ListNode p = new ListNode();//新链表的头结点原创 2021-12-19 23:08:49 · 485 阅读 · 0 评论 -
203. 移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点代码一我自己写的,没有官方迭代法简洁,主要是我用了两个指针pre和p指向目标元素和目标元素前一个位置,而官方用p.next p.next.nextclass Solution { public ListNode removeElements(ListNode head, int val) { while(head!=null&&am原创 2021-12-19 17:28:22 · 167 阅读 · 0 评论 -
21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路:类似合并数组,双指针,将较小的数插入到新数组中。而对于指针,也差不多,新建一个头指针,将较小的数链接在这个指针后面。class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { ListNode res = new ListNode(); ListNode p =原创 2021-12-19 15:38:59 · 558 阅读 · 0 评论 -
141. 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr原创 2021-12-16 15:09:39 · 301 阅读 · 0 评论 -
242. 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-anagram著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。代码一先看原题目,将字符串转换为字符数组,然后进行排序,排序后比较,一旦出现不一样的,立马返回false代码二,对于扩展,如果字符串中包含原创 2021-12-15 21:19:00 · 93 阅读 · 0 评论 -
统计字符串每个字符出现的次数
//str是个只包含小写字母的字符串,以下是统计每个字符出现的频数int[] cnt = new int[26];//toCharArray()for (char ch : str.toCharArray()) { cnt[ch - 'a']++;}//charAt()for(int i = 0;i<str.length;i++){ char ch = str.charAt(i); cnt[ch - 'a']++;}...原创 2021-12-15 21:00:04 · 671 阅读 · 0 评论 -
383. 赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ransom-note著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。和387. 字符串中的第一个唯一字符思路一样分为原创 2021-12-15 20:40:07 · 484 阅读 · 0 评论 -
387. 字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。代码一:数组存储统计字母出现频数class Solution { public int firstUniqChar(String s) { int[] arr = new int[26]; int n = s.length(); for(int i = 0;i<n;i++){ arr[s.charAt(i)-'a']++;原创 2021-12-15 20:34:15 · 190 阅读 · 0 评论 -
876. 链表的中间结点
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点代码一:自己想的一个方法class Solution { public ListNode middleNode(ListNode head) { ListNode p1 = head; ListNode p2 = head; //i,j作为判断标志 int i = 1; int j = 1; //原创 2021-12-14 20:46:37 · 411 阅读 · 0 评论