
leetcode
文章平均质量分 61
总结算法题解
小火车Thomasc
呜呼啦呼,小火车变身
展开
-
leetcode----82. 删除排序链表中的重复元素 II(三指针和递归)
82. 删除排序链表中的重复元素 II(三指针和递归)问题:给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。示例:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]输入:head = [1,1,1,2,3]输出:[2,3]思路:三指针 比较好理解 双指针也能做 思路是一样的,一个指针cur指向当前位置,一个指针prev指向前一个节点,方便删除,最后一个指针next指向下一个节点,核心思想就是原创 2022-04-25 22:32:57 · 729 阅读 · 0 评论 -
leetcode----143. 重排链表(寻找链表中点、反转链表以及链表合并 合体)
143. 重排链表(寻找链表中点、反转链表以及链表合并)问题:给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为:L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:示例1:示例2:示例1:输入:head = [1,2,3,4]输出:[1,4,2,3]示例2:输入:head = [1,2,3,4,5]输出原创 2022-04-23 21:52:40 · 719 阅读 · 0 评论 -
leetcode----199. 二叉树的右视图(BFS和DFS两种解法)
199. 二叉树的右视图 (BFS和DFS)问题:给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1,3,4]输入: [1,null,3]输出: [1,3]输入: []输出: []思路:BFS 层序遍历,记录每一层最右节点即可,两种方式 正序记录最后一个,逆序记录每一层第一个;class Solution { public List&l原创 2022-04-19 22:12:52 · 342 阅读 · 0 评论 -
leetcode----33. 搜索旋转排序数组(局部有序,二分解决)
33. 搜索旋转排序数组(二分法)局部有序问题:整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。原创 2022-04-11 22:26:03 · 244 阅读 · 0 评论 -
leetcode----969.煎饼排序(贪心+双指针)
969.煎饼排序(贪心+双指针)问题:给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序。一次煎饼翻转的执行过程如下:选择一个整数 k ,1 <= k <= arr.length反转子数组 arr[0…k-1](下标从 0 开始)例如,arr = [3,2,1,4] ,选择 k = 3 进行一次煎饼翻转,反转子数组 [3,2,1] ,得到 arr = [1,2,3,4] 。以数组形式返回能使 arr 有序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10原创 2022-02-19 20:50:59 · 526 阅读 · 0 评论 -
leetcode---- 688.骑士在棋盘上的概率(记忆化dfs和动态规划两种解法)
688.骑士在棋盘上的概率问题:在一个 n x n 的国际象棋棋盘上,一个骑士从单元格 (row, column) 开始,并尝试进行 k 次移动。行和列是 从 0 开始 的,所以左上单元格是 (0,0) ,右下单元格是 (n - 1, n - 1) 。象棋骑士有8种可能的走法,如下图所示。每次移动在基本方向上是两个单元格,然后在正交方向上是一个单元格。每次骑士要移动时,它都会随机从8种可能的移动中选择一种(即使棋子会离开棋盘),然后移动到那里。骑士继续移动,直到它走了 k 步或离开了棋盘。返回原创 2022-02-17 10:43:30 · 637 阅读 · 0 评论 -
leetcode----540.有序数组中的单一元素(异或和二分两种解法)
540.有序数组中的单一元素问题:给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2输入: nums = [3,3,7,7,10,11,11]输出: 10思路:暴力,异或,也能过,但是不符合时间复杂度要求class Solution { public in原创 2022-02-14 10:34:42 · 461 阅读 · 0 评论 -
leetcode----自定义实现花式反转字符串(151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串)
文章目录151.翻转字符串里的单词剑指Offer58-II.左旋转字符串151.翻转字符串里的单词问题:给你一个字符串 s ,逐个翻转字符串中的所有 单词 。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。说明:输入字符串 s 可以在前面、后面或者单词间包含多余的空格。翻转后单词间应当仅用一个空格分隔。翻转后的字符串中不应包含额外的空格。示例:输入:s = "the sky is blue"原创 2022-02-13 23:00:24 · 195 阅读 · 0 评论 -
leetcode----72.编辑距离(动态规划)
72.编辑距离问题:给你两个单词word1和word2, 请返回将word1 转换成word2所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删除 'r')rose -> ros (删除 'e')输入:word1 = "intention"原创 2022-02-12 21:41:56 · 718 阅读 · 0 评论 -
leetocde----n数和模板(1.两数之和、15.三数之和、18.四数之和)
适用于:1.两数之和//例如 求两数和Arrays.sort(nums);return nSumTarget(nums, 2, 0, target);15.三数之和18.四数之和n数之和模板//传入的数组需有序,有序才能使用二分法//n为n数和 start为起始索引 tartget为所求的和public List<List<Integer>> nSumTarget(int[] nums, int n, int start, int target){原创 2022-02-10 22:46:32 · 228 阅读 · 0 评论 -
leetcode----1447.最简分数(辗转相除法求最大公约数)
1447.最简分数问题:给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于 n 的 最简 分数 。分数可以以 任意 顺序返回。示例:输入:n = 2输出:["1/2"]解释:"1/2" 是唯一一个分母小于等于 2 的最简分数。输入:n = 3输出:["1/2","1/3","2/3"]输入:n = 4输出:["1/2","1/3","1/4","2/3","3/4"]解释:"2/4" 不是最简分数,因为它可以化简为 "1/2" 。输入:n =原创 2022-02-10 21:23:24 · 378 阅读 · 0 评论 -
leetcode----42.接雨水(从暴力解法优化到双指针)
42.接雨水问题:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 输入:height = [4,2,0,3,2,5]输出:9思路:这道题最主要的是将问题分解,不要从全局看,而是从局部看。参考labulad原创 2022-02-08 23:02:20 · 169 阅读 · 0 评论 -
leetcode----1001.网格照明(模拟+哈希表)
1001.网格照明(模拟+哈希表)问题:在大小为 n x n 的网格 grid 上,每个单元格都有一盏灯,最初灯都处于 关闭 状态。给你一个由灯的位置组成的二维数组 lamps ,其中 lamps[i] = [rowi, coli] 表示 打开 位于 grid[rowi][coli] 的灯。即便同一盏灯可能在 lamps 中多次列出,不会影响这盏灯处于 打开 状态。当一盏灯处于打开状态,它将会照亮 自身所在单元格 以及同一 行 、同一 列 和两条 对角线 上的 所有其他单元格 。另给你一个二维数组原创 2022-02-08 21:33:44 · 433 阅读 · 0 评论 -
leetcode----24.两两交换链表中的节点(迭代和递归两种解法)
24.两两交换链表中的节点问题:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例:输入:head = [1,2,3,4]输出:[2,1,4,3]输入:head = []输出:[]输入:head = [1]输出:[1]思路: 参考:代码随想录双指针–迭代版本重点在节点交换 注意学习 while条件以及双指针的位置,双指针这样放使得操作会方便好多。class Solution {原创 2022-02-07 23:13:08 · 316 阅读 · 0 评论 -
leetcode----1405.最长快乐字符串(优先队列+贪心)
1405.最长快乐字符串(优先队列+贪心)问题:如果字符串中不含有任何 ‘aaa’,‘bbb’ 或 ‘ccc’ 这样的字符串作为子串,那么该字符串就是一个「快乐字符串」。给你三个整数 a,b ,c,请你返回 任意一个 满足下列全部条件的字符串 s:s 是一个尽可能长的快乐字符串。s 中 最多 有a 个字母 ‘a’、b 个字母 ‘b’、c 个字母 ‘c’ 。s 中只含有 ‘a’、‘b’ 、‘c’ 三种字母。如果不存在这样的字符串 s ,请返回一个空字符串 “”。示例:输入:a = 1, b原创 2022-02-07 22:33:37 · 336 阅读 · 0 评论 -
leetcode----621.任务调度器(模拟 和 桶思想两种解法)
621.任务调度器问题:给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。示例:输入:tasks = ["A","A","A",原创 2022-02-04 21:53:17 · 231 阅读 · 0 评论 -
leetcode----1414.和为K的最少斐波那契数字数目(贪心)
1414.和为K的最少斐波那契数字数目问题:给你数字 k ,请你返回和为 k 的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次。斐波那契数字定义为:F1 = 1F2 = 1Fn = Fn-1 + Fn-2 , 其中 n > 2 。数据保证对于给定的 k ,一定能找到可行解。示例:输入:k = 7输出:2 解释:斐波那契数字为:1,1,2,3,5,8,13,……对于 k = 7 ,我们可以得到 2 + 5 = 7 。输入:k = 10输出:2 解释:对于 k原创 2022-02-03 21:22:49 · 566 阅读 · 0 评论 -
leetcode----单调栈解决下一个更大元素问题
496.下一个更大元素I、503.下一个更大元素II、739.每日温度原创 2022-02-02 22:20:50 · 865 阅读 · 0 评论 -
leetcode----581.最短无序连续子数组
581.最短无序连续子数组问题:给你一个整数数组 nums ,你需要找出一个连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。示例:输入:nums = [2,6,4,8,10,9,15]输出:5解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。输入:nums = [1,2,3,4]输出:0输入:nums = [1]输出:0思路:需要注意:从前往后,不一定相邻原创 2022-02-01 12:06:04 · 114 阅读 · 0 评论 -
leetcode----437.路径总和III(双递归 和 回溯前缀和+dfs两种解法)
437.路径总和III问题:给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例:输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路径有 3 条,如图所示。输入:root = [5,4,8,11,null,13原创 2022-01-31 18:20:30 · 1012 阅读 · 0 评论 -
leetocde----第278场单周赛总结
文章目录5993.将找到的值乘以25981.分组得分最高的所有下标5994.查找给定哈希值的子串5993.将找到的值乘以2问题:给你一个整数数组 nums ,另给你一个整数 original ,这是需要在 nums 中搜索的第一个数字。接下来,你需要按下述步骤操作:如果在 nums 中找到 original ,将 original 乘以 2 ,得到新 original(即,令 original = 2 * original)。否则,停止这一过程。只要能在数组中找到新 original ,就对新原创 2022-01-30 20:20:51 · 505 阅读 · 0 评论 -
leetcode----394.字符串解码(栈)
394.字符串解码问题:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:输入:s = "3[a]2[bc]"输出:"aaabcbc"输入原创 2022-01-29 22:00:58 · 649 阅读 · 0 评论 -
leetcode----92.反转链表 II(迭代和递归两种方式)
文章目录92.反转链表II递归迭代 头插法92.反转链表II问题:给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表。示例:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]输入:head = [5], left = 1, right = 1输出:[5]思路:递归前left个节点保原创 2022-01-28 19:53:49 · 478 阅读 · 0 评论 -
leetcode----707.设计链表、206.反转链表(迭代和递归两种解法)
文章目录707.设计链表206.反转链表707.设计链表问题:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个原创 2022-01-27 22:36:35 · 104 阅读 · 0 评论 -
leetcode----538.把二叉搜索树转换为累加树(逆中序遍历和Morrirs中序遍历+Morrirs前中序遍历模板)
538.把二叉搜索树转换为累加树问题:给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。示例:输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]输出:原创 2022-01-26 22:28:30 · 392 阅读 · 0 评论 -
leetcode----70场双周赛(5971.打折购买糖果的最小开销、5972.统计隐藏数组数目)
文章目录5971.打折购买糖果的最小开销5972.统计隐藏数组数目第一次参加周赛,费死劲AC了两道。以后希望可以坚持参加周赛。5971.打折购买糖果的最小开销问题:一家商店正在打折销售糖果。每购买 两个 糖果,商店会 免费 送一个糖果。免费送的糖果唯一的限制是:它的价格需要小于等于购买的两个糖果价格的 较小值 。比方说,总共有 4 个糖果,价格分别为 1 ,2 ,3 和 4 ,一位顾客买了价格为 2 和 3 的糖果,那么他可以免费获得价格为 1 的糖果,但不能获得价格为 4 的糖果。给你一个原创 2022-01-23 00:07:38 · 400 阅读 · 0 评论 -
leetcode----滑动窗口小练(209.长度最小的子数组、904.水果成篮)
文章目录滑动窗口框架209.长度最小的子数组904.水果成篮滑动窗口框架/* 滑动窗口算法框架 */void slidingWindow(string s, string t) { unordered_map<char, int> need, window; for (char c : t) need[c]++; int left = 0, right = 0; int valid = 0; while (right < s.siz原创 2022-01-21 22:12:11 · 506 阅读 · 0 评论 -
leetcode----双指针练习之移除元素(27、283、844、977题)
文章目录27.移除元素283.移动零844.比较含退格的字符串977.有序数组的平方27.移除元素问题:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且原创 2022-01-19 23:17:34 · 166 阅读 · 0 评论 -
leetcode---二分查找小练习(34、35、69、367、704题)
文章目录704.二分查找35.搜索插入位置34.在排序数组中查找元素的第一个和最后一个位置69.Sqrt(x)367.有效的完全平方数704.二分查找两种写法,搜索区间左闭右闭,while条件用 <=class Solution { public int search(int[] nums, int target) { int l = 0; int r = nums.length - 1; //注意这里 int middle = 0;原创 2022-01-18 23:17:33 · 390 阅读 · 0 评论 -
leetcode----前缀和数组问题(303、304、560题)
文章目录[303.区域和检索 - 数组不可变](https://leetcode-cn.com/problems/range-sum-query-immutable/)[304.二维区域和检索 - 矩阵不可变](https://leetcode-cn.com/problems/range-sum-query-2d-immutable/)560.和为K的子数组303.区域和检索 - 数组不可变问题:给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。原创 2022-01-17 23:31:48 · 623 阅读 · 0 评论 -
leetcode---DFS与BFS解决课程表问题(207、210)
207.课程表(dfs和bfs)问题:你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回原创 2022-01-14 21:57:28 · 617 阅读 · 0 评论 -
leetcode----240.搜索二维矩阵II(二分查找和z字形查找两种解法)
240.搜索二维矩阵II问题:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GwU4jVV3-1641996713567)(https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/25/searchgrid2.jpg)]原创 2022-01-12 22:13:55 · 434 阅读 · 0 评论 -
leetcode---208.实现Trie(前缀树)(前缀树的三种实现)
208.实现Trie(前缀树)问题:Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 fal原创 2022-01-11 21:59:33 · 513 阅读 · 0 评论 -
leetcode----236.二叉树的最近公共祖先(后序遍历)
236.二叉树的最近公共祖先问题:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。思路:后序遍历 参考这篇题解,有助原创 2022-01-10 22:30:35 · 471 阅读 · 0 评论 -
leetcode----160.相交链表(哈希表和双指针两种解法)
160.相交链表(哈希表和双指针两种解法)问题:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 思路:首先想到的是借助list存储遍历过的节点,无论遍历到哪个链表的节点都取list中查找,若存在,则说明交点就是当前节点。正确思路应该是先遍历一条链表,将节点存入list,然后再遍历另一条链表,遍历过程查看list中是否存在这个节点public class Solution { public ListNode原创 2022-01-08 21:56:07 · 431 阅读 · 0 评论 -
leetcode----dfs解决岛屿问题(200、1254、1020、695、1905)
200.岛屿数量(DFS)问题:给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1思路:dfs原创 2022-01-07 22:13:39 · 739 阅读 · 0 评论 -
leetcode----98.验证二叉搜索树(中序遍历+dfs两种解法)
98.验证二叉搜索树问题:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。思路:二叉搜索树的中序遍历为升序序列class Solution { TreeNode pre = null; boolean res = true; public boolean isValidBST(TreeNode ro原创 2022-01-06 21:52:33 · 452 阅读 · 0 评论 -
leetcode---- 287.寻找重复数(二分查找与快慢指针两种解法)
leetcode-----287.寻找重复数问题:给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。你设计的解决方案必须不修改数组 nums 且只用常量级 O(1) 的额外空间。思路:二分查找定义count[i]表示nums数组中小于等于i的数字的个数。且count数组是递增的。以示例1为例输入:nums = [1,3,4,2,2]输出:2原创 2022-01-05 11:07:34 · 1566 阅读 · 0 评论 -
leetcode----215.数组中的第k个最大元素(优先队列和快速选择两种解法)
215.数组中的第k个最大元素问题:给定整数数组 nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。思路:排序这是最容易想到的思路,首先将数组排序,然后取倒数第k个就是所求。注意Arrays.sort()默认为自然排序,无法对基本数据类型的数据进行自定义排序,但是可以对其包装类Integer类型的数组自定义排序。class Solution { public int findKthLargest(int[] nu原创 2022-01-03 22:34:53 · 431 阅读 · 0 评论 -
leetcode----238.除自身以外数组的乘积
238.除自身以外数组的乘积问题:给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。思路:第一时间想到的是使用除法,定义一个数mul用来记录数组中全部元素的乘积,然后再依次除以自身来构建所求数组。但是这种方式需要注意数组中元素为0的情况。而且题目要求不能使用除法。前后缀数组定义l和r两个数组,l[i]和r[i]分别表示数组元素nums[i]左前缀元素乘积和右后缀元素原创 2022-01-01 21:22:14 · 414 阅读 · 0 评论