力扣
力扣基础
菜又学
默默奋斗的小白。
展开
-
力扣:最大值(Java)
给定一组非负整数nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。class Solution { public String largestNumber(int[] nums) { String[] strArr = new String[nums.length];/创建字符数组 for (int i = 0; i < nums.length; i++) { .转载 2022-05-11 12:13:23 · 173 阅读 · 0 评论 -
力扣:环形链表(Java)
给你一个链表的头节点 head ,判断链表中是否有环。方法1public class Solution { public boolean hasCycle(ListNode head) { if(head==null||head.next==null) return false; ListNode a = head; ListNode b = head.next; while (a != b) { if转载 2022-05-11 10:31:49 · 217 阅读 · 0 评论 -
力扣:两个数组的交集 II(Java)
给你两个整数数组nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。public class Solution { public int[] intersect(int[] nums1, int[] nums2) { Arrays.sort(nums1);//对数组进行排序 Arrays.sort(nums2); .转载 2022-05-10 20:15:44 · 212 阅读 · 0 评论 -
力扣:移动零(Java)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。class Solution { public void moveZeroes(int[] nums) { int slow = 0; for(int fast = 0;fast<nums.length;fast++){ if(nums[fast] != 0){转载 2022-05-10 19:38:02 · 167 阅读 · 0 评论 -
力扣:存在重复元素(Java)
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。方法1class Solution { public boolean containsDuplicate(int[] nums) { Arrays.sort(nums); for(int i=0;i<nums.length-1;i++){ if(nums[i]==nums[i+1]){转载 2022-05-10 17:37:28 · 286 阅读 · 0 评论 -
力扣:旋转数组(Java)
给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。class Solution { public void rotate(int[] nums, int k) { int n = nums.length; k %= n; rotate_2(nums,0,n-1); rotate_2(nums,0,k-1); rotate_2(nums,k,n-1); } private void转载 2022-05-10 11:07:01 · 86 阅读 · 0 评论 -
力扣:合并两个有序数组(Java)
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。class Solution { p转载 2022-05-09 16:07:40 · 3209 阅读 · 0 评论 -
力扣:反转链表(迭代解法)
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode curr = head; while (curr != null) { ListNode next = curr.next;//记录当前元素指针的指向地址 curr.next = prev;//当前指向前一个元素 p转载 2022-05-09 12:08:32 · 145 阅读 · 0 评论 -
力扣:搜索二维矩阵 II(Java)
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。class Solution { public boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length, n = matrix[0].length; int x = 0, y = n - 1;转载 2022-05-09 11:02:46 · 182 阅读 · 0 评论 -
力扣:乘积最大子数组
给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位 整数。class Solution { public int maxProduct(int[] nums) { int res = nums[0]; int imax = nums[0]; int imin = nums[0]; for(int i=1; i<nu转载 2022-05-08 12:04:48 · 124 阅读 · 0 评论 -
力扣:验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。class Solution { public boolean isPalindrome(String s) { int left = 0, right = s.length()-1; while(left < right){//如果指针指的不是字母和数字,指针前移 while(!Character.isLetterOrDigit(s.charAt转载 2021-10-13 23:07:58 · 70 阅读 · 0 评论 -
力扣:验证回文串--使用正则匹配
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。public class PalindromeRegular { public boolean isPalindrome(String s) { //去掉非字母数字的字符 String actual = s.replaceAll("[^A-Za-z0-9]", "").toLowerCase(); //把字符反转 String rev = new St转载 2021-10-14 07:53:13 · 576 阅读 · 0 评论 -
力扣 455. 分发饼干
class Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); // 对 g 数组排序 Arrays.sort(s); int count = 0; // 统计孩子满足的个数 int k = 0; // 记录分到第几块饼干了 for (int i = 0; i < g.length.转载 2021-10-14 17:01:59 · 60 阅读 · 0 评论 -
力扣:455. 分发饼干--方法二使用while
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。public class Solution { public int findContentChildren(int[] ...转载 2021-10-15 11:13:26 · 144 阅读 · 0 评论 -
力扣 135. 分发糖果
老师想给孩子们分发糖果,有 N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?import java.util.Arrays;public class Candy { public int candy(int[] ratings) { int[] candies = .转载 2021-10-15 13:11:16 · 77 阅读 · 0 评论 -
力扣:多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。class Solution { public int majorityElement(int[] nums) {// 对出现的数字进行计数,如果有不同的数字出现,那么计数值减一,直到计数为0// 就对当前数字进行计数 int count = 0;// 当前数字出现...转载 2021-10-13 13:14:29 · 120 阅读 · 0 评论 -
力扣:只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。classSolution{publicintsingleNumber(int[]nums){intresult=0;for(inti=0;i<nums.length;i++){result^=nums[i];}returnresult;}}...转载 2021-10-13 08:29:46 · 39 阅读 · 0 评论 -
力扣 167. 两数之和 II - 输入有序数组
给定一个已按照 非递减顺序排列的整数数组numbers ,请你从数组中找出两个数满足相加之和等于目标数target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。class Solution { publi...转载 2021-10-18 10:20:05 · 81 阅读 · 0 评论 -
力扣 435. 无重叠区间
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。class Solution { public int eraseOverlapIntervals(int[][] intervals) { int len=intervals.length; if(len==0) return 0; //对每行第二个元素升序排序 Arrays.sort(intervals,new Comparator<i转载 2021-10-17 11:11:00 · 54 阅读 · 0 评论