- 博客(26)
- 收藏
- 关注
原创 LeetCode- 1539-第k个缺失的正整数
给你一个严格升序排列的正整数数组arr和一个整数k。请你找到这个数组里第k个缺失的正整数。示例:输入:arr = [2,3,4,7,11], k = 5输出:9解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,...] 。第 5 个缺失的正整数为 9 。输入:arr = [1,2,3,4], k = 2输出:6解释:缺失的正整数包括 [5,6,7,...] 。第 2 个缺失的正整数为 6 。解决方法:最开始是用了额外空间去实现,但最后执行出...
2022-03-05 11:41:51 514
原创 LeetCode- 1486- 数组异或操作
给你两个整数,n 和 start 。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。请返回 nums 中所有元素按位异或(XOR)后得到的结果。示例:输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。 "^" 为按位异或 XOR 运算符。解决方法:理解值的异或底层操作原理:同为1,...
2022-03-04 09:50:50 6475
原创 LeetCode- 1480- 一维数组的动态和
给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。解决方法:根据示例,本题其实很好理解,每一位的值等于前面所有值之和。代码部分:class Solution { public int[] runningSu
2022-03-04 09:25:44 259
原创 LeetCode- 1475- 商品折扣后的最终价格
给你一个数组prices,其中prices[i]是商店里第i件商品的价格。商店里正在进行促销活动,如果你要买第i件商品,那么你可以得到与 prices[j] 相等的折扣,其中j是满足j > i且prices[j] <= prices[i]的最小下标,如果没有满足条件的j,你将没有任何折扣。请你返回一个数组,数组中第i个元素是折扣后你购买商品 i最终需要支付的价格。示例:输入:prices = [8,4,6,2,3]输出:[4,2,4,...
2022-03-03 15:42:26 234
原创 LeetCode - 1394 -找出数组中的幸运数
在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。给你一个整数数组 arr,请你从中找出并返回一个幸运数。 如果数组中存在多个幸运数,只需返回 最大 的那个。 如果数组中不含幸运数,则返回 -1 。 示例:输入:arr = [2,2,3,4]输出:2解释:数组中唯一的幸运数是 2 ,因为数值 2 的出现频次也是 2 。输入:arr = [1,2,2,3,3,3]输出:3解释:1、2 以及 3 都是幸运数,只需要返回其中
2022-03-03 11:40:13 226
原创 LeetCode - 1281 -整数的各位积和之差
给你一个整数n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。示例:输入:n = 234输出:15解释:各位数之积 = 2 * 3 * 4 = 24各位数之和 = 2 + 3 + 4 = 9结果 = 24 - 9 = 15代码部分:package Class02;/** * 一个整数的各位数字积和之差 */public class LeetCode_1281_SubstractProductAndSum { public int...
2022-03-03 10:36:41 5889
原创 LeetCode - 1200- 最小绝对差
给你个整数数组arr,其中每个元素都不相同。请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。示例:输入:arr = [4,2,1,3]输出:[[1,2],[2,3],[3,4]]输入:arr = [1,3,6,10,15]输出:[[1,3]]解决方法:循环遍历数组,找到 最小值,然后再循环,返回找到差值与最小值相同的两个数。问题:1、怎么只返回两个数?首先想到的是用list.add()去添加与min相等的两个数,但是最后在集合...
2022-03-03 09:50:03 505
原创 LeetCode- 455-分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值示例:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,3个孩子的胃口值...
2022-03-02 21:15:00 329
原创 LeetCode - 590 -N叉数的后序遍历
给定一个 n 叉树的根节点 root ,返回 其节点值的 后序遍历 。n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。示例:输入:root = [1,null,3,2,4,null,5,6]输出:[5,6,3,2,4,1]问题:不知道怎么遍历子孩子?N-叉数的子孩子使用List<Node>去存放的,所以循环遍历这个集合即可。代码部分:package 二叉树;import java.ut...
2022-03-02 11:39:39 7627
原创 LeetCode - 448 -数组中未出现的数
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。示例:输入:nums = [4,3,2,7,8,2,3,1]输出:[5,6]解决方法:申请一个额外的辅助数组temp,将nums出现的值作为存放在temp数组中的下标,并将其值 + 1。最后temp中值为0的那个位置即没有出现的数。代码部分:package Class02;import
2022-03-02 10:32:25 254
原创 LeetCode - 404 - 左叶子之和
给定二叉树的根节点 root ,返回所有左叶子之和。示例:输入: root = [3,9,20,null,null,15,7]输出: 24解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24问题:怎么判断左右子树?用一个 布尔型的 isLeft 做一个标记。左为true,右为false。这样我们就能在递归寻找叶子节点时,根据isLeft的值来判断是否是左叶子节点。代码部分:package 二叉树;/** * 返回二叉树的所有...
2022-03-01 23:17:19 242
原创 LeetCode- 349 - 两个数组的交集
给定两个数组nums1和nums2,返回它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序示例:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]解释:[4,9] 也是可通过的解决方法:使用到了HashSet。这里介绍一下HashSet的add方法。当HashSet调用add()方法存储对象的时候,...
2022-03-01 14:30:55 346
原创 LeetCode - 342 - 4的幂
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4^x示例:输入:n = 16输出:true输入:n = 1输出:true解决方法:和解决丑数的方法一致代码部分:package Class02;/** * 和求丑数是一样的道理 */public class LeetCode_342_PowerOfFour { publi
2022-03-01 10:32:45 395
原创 LeetCode - 263 - Ugly Number
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例:输入:n = 6输出:true解释:6 = 2 × 3输入:n = 14输出:false解释:14 不是丑数,因为它包含了另外一个质因数7输入:n = 1输出:true解释:1 通常被视为丑数。解决方法:首先,丑数是正整数,故排除掉 <= 0的数。由于丑数是只包含2、3、...
2022-03-01 10:09:02 349
原创 LeetCode_136_只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。解决方法:采用位运算 -- > 异或。异或规则:0 ^ 0 = 00 ^ 1 = 11 ^ 1 = 01 ^ 0 = 1因为元素都是两两出现,如aabbccd - > a ^ a ^ b ^ b ^ c ^ c ^ d =……= 0 ^d = d 。( 0 ^ x = x)当然元素序列可以打乱,因为异或满足交换律。代码部分:package .
2022-02-28 20:48:17 60
原创 LeetCode_104_求二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。解决方法:代码很简单,主要是对递归的理解。代码部分:class Solution { public int maxDepth(TreeNode root) { if(root == null) return 0; int left = maxDepth(root.left); int right = max
2022-02-28 17:35:40 138
原创 LeetCode - 75 颜色分类
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。要求:必须在不使用库的sort函数的情况下解决这个问题。解决方法:全部的值由 0、1、2组成,随机散列分布,所以直接写个排序算法也就可以完成相同数值相邻。如果不用排序算法,该怎么做呢?类似与快速排序,定义两个指针,0都在左指针之前,2都在右指针后,1在两者之间即可。那么怎么实现呢?1、遍历整
2022-02-28 14:46:44 261
原创 LeetCode - 28 实现 strStr()
题目:给你两个字符串haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回-1 。3种示例:输入:haystack = "hello", needle = "ll"输出:2输入:haystack = "aaaaa", needle = "bba"输出:-1输入:haystack = "", needle = ""输出:0解决方法:采用暴力匹配。问题...
2022-02-27 16:54:29 172
原创 LeetCode - 27 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。要求:不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。示例:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 n
2022-02-27 11:03:26 129
原创 LeetCode - 26 删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。要求:不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解决方法:因
2022-02-26 21:13:02 215
原创 LeetCode - 合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:解决方法:新建一个链表,将两链表比较后较小的值通过尾插法链接到新链表。当中如果出现其中一个链表为空,另一个不为空的情况,那直接将不为空的链表直接链接到新链表。出现的问题:最后结果处写成了 :return head;结果错误,因为这样会多返回一个0,我认为是头指针节点默认值为0。我们合并的链表实则是从head.next开始的,不包括头节点。那么则要返回head.next;...
2022-02-26 14:47:59 179
原创 LeetCode 有效括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。解决方法:有效括号可采用栈的原理。遍历字符串,对于左括号入栈,遇到右括号,则将栈顶匀速弹出,如果两括号刚好匹配,则为有效字符。代码实现:class Solution { public boolean isValid(String s) { if(s.length()==0){ .
2022-02-25 21:26:09 1012
原创 最长字符串前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。解决方法:纵向比较通过列优先的方式,通过charAt()方法比较每个字符串的每一列值。因为只要有其中一个不同说明就已经得到了最长前缀,这时用String类的substring()方法返回数值即可。class Solution { public String longestCommonPrefix(String[] strs) { if(strs==null||strs.lengt
2022-02-25 12:03:32 439
原创 回文数(指正序(从左向右)和倒序(从右向左)读都是一样的整数)
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。字符串方法判断class Solution { public boolean isPalindrome(int x) { StringBuilder str = new StringBuilder(Integer.toString(x)); if(str.toString().equals(str.reverse().toString()))
2022-02-13 15:51:29 1093
原创 力扣简单题Day01
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。代码实现:class Solution { public int[] twoSum(int[] nums, int target) { ...
2022-02-09 16:49:41 166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人