![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣腾讯精选50道
happytaohaha
好记性不如烂笔头
展开
-
力扣刷题237. 删除链表中的节点(java)
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入...原创 2019-10-03 11:28:21 · 137 阅读 · 0 评论 -
力扣刷题229. 求众数 II(java)
题目给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。示例 1:输入: [3,2,3]输出: [3]示例 2:输入: [1,1,1,3,3,2,2,2]输出: [1,2]思路题目没有说是否空数组 因此可以返回空数组同(求众数的思路)题的思路使用map< Integer,In...原创 2019-10-02 10:12:45 · 213 阅读 · 1 评论 -
力扣刷题169. 求众数(java)
题目给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2思路输入一个数组,众数是在数组中出现大于[n/2]的元素使用map 来存数组 < 编号,num >c...原创 2019-10-02 10:04:14 · 210 阅读 · 0 评论 -
力扣刷题160. 相交链表(java)
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如...原创 2019-10-01 20:53:45 · 154 阅读 · 0 评论 -
力扣刷题155. 最小栈(java)
题目设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);m...原创 2019-09-30 21:40:05 · 257 阅读 · 0 评论 -
力扣刷题148. 排序链表(java)
题目在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5思路O(nlogn) 的时间复杂度 常量级的空间复杂度O(1) ...原创 2019-09-29 09:02:43 · 414 阅读 · 0 评论 -
力扣刷题146. LRU缓存机制(java)
题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使...原创 2019-09-28 20:29:46 · 276 阅读 · 0 评论 -
力扣刷题142. 环形链表II (java)
题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1...原创 2019-09-26 08:54:32 · 139 阅读 · 0 评论 -
力扣刷题141. 环形链表(java)
题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:tru...原创 2019-09-26 08:14:57 · 147 阅读 · 0 评论 -
力扣刷题260. 只出现一次的数字 III(java)
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?思路核心思想:a & (-a) 可以获得a最低的非0位 ...原创 2019-09-25 09:27:36 · 179 阅读 · 0 评论 -
力扣刷题137. 只出现一次的数字 II(java)
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99思路模拟三进制法和上一题的异或思路一样,出现一次标记为1,出现两次标记为2,出现三次抵...原创 2019-09-25 09:11:51 · 228 阅读 · 0 评论 -
力扣刷题136. 只出现一次的数字(java)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路要求: 线性时间复杂度 O(n) 和 空间复杂度 O(1)暴力法复杂度 是 时间复杂度O(n^2) ...原创 2019-09-25 08:15:44 · 164 阅读 · 0 评论 -
力扣刷题124. 二叉树中的最大路径和(Java)
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ ...原创 2019-09-24 16:08:50 · 1880 阅读 · 0 评论 -
力扣周赛 5197. 最小绝对差(java)
题目给你个整数数组 arr,其中每个元素都 不相同。请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。示例 1:输入:arr = [4,2,1,3]输出:[[1,2],[2,3],[3,4]]示例 2:输入:arr = [1,3,6,10,15]输出:[[1,3]]示例 3:输入:arr = [3,8,-10,23,19,-4,-14,27]输出:[[-14,-1...原创 2019-09-22 16:32:52 · 459 阅读 · 0 评论 -
力扣刷题206. 反转链表(java)
题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?思路第一思路 使用额外空间栈 来解决 后进先出/** * Definition for singly-linked list. * p...原创 2019-10-02 10:48:50 · 280 阅读 · 0 评论 -
力扣刷题92. 反转链表 II(java)
题目反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL思路同反转链表一 ,采用两个指针记录反转。此题目需要记录反转条件,记录反转的m前n的后节点...原创 2019-10-02 11:22:43 · 312 阅读 · 0 评论 -
力扣刷题83. 删除排序链表中的重复元素(java)
题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3思路排序列表因此不需要其他的空间 只需要双指针即可/** * Definition for singly-linked list. ...原创 2019-10-02 11:39:56 · 195 阅读 · 0 评论 -
力扣刷题238. 除自身以外数组的乘积(java)
给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数...原创 2019-10-03 11:25:47 · 170 阅读 · 0 评论 -
力扣刷题292. Nim 游戏(java)
题目你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3...原创 2019-10-03 11:01:51 · 304 阅读 · 0 评论 -
力扣刷题557. 反转字符串中的单词 III(java)
题目给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。题解class Solution { public String ...原创 2019-10-03 10:55:19 · 119 阅读 · 0 评论 -
力扣刷题344. 反转字符串(java)
题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:[...原创 2019-10-03 10:35:49 · 128 阅读 · 0 评论 -
力扣刷题236. 二叉树的最近公共祖先(java)
题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,...原创 2019-10-03 10:30:36 · 119 阅读 · 0 评论 -
力扣刷题235. 二叉搜索树的最近公共祖先(java)
题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [...原创 2019-10-03 10:22:01 · 118 阅读 · 0 评论 -
力扣刷题231. 2的幂(java)
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 2^0 = 1示例 2:输入: 16输出: true解释: 2^4 = 16示例 3:输入: 218输出: false思路除2 都是整除 并且 最后一步都是 除 2 商0 余 1class Solution { public boolean isPowe...原创 2019-10-03 08:51:33 · 131 阅读 · 0 评论 -
力扣刷题230. 二叉搜索树中第K小的元素
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1], k ...原创 2019-10-03 08:41:44 · 118 阅读 · 0 评论 -
力扣刷题220. 存在重复元素 III(java)
给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t = 2输出: true示例 3:输入...原创 2019-10-03 08:32:46 · 426 阅读 · 0 评论 -
力扣刷题219. 存在重复元素 II(java)
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,...原创 2019-10-03 07:51:35 · 207 阅读 · 0 评论 -
力扣刷题217. 存在重复元素(java)
题目给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路class Solution { ...原创 2019-10-03 07:38:43 · 105 阅读 · 0 评论 -
力扣刷题82. 删除排序链表中的重复元素 II(java)
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3...原创 2019-10-03 07:28:31 · 98 阅读 · 0 评论 -
力扣刷题215. 数组中的第K个最大元素(java)
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。class Solution { ...原创 2019-10-02 18:41:10 · 166 阅读 · 0 评论 -
力扣刷题122. 买卖股票的最佳时机 II(java)
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交...原创 2019-09-22 09:32:42 · 374 阅读 · 0 评论 -
力扣刷题121. 买卖股票的最佳时机(java)
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2019-09-22 09:00:30 · 206 阅读 · 0 评论 -
力扣刷题20. 有效的括号(Java)
题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:...原创 2019-09-05 09:12:40 · 382 阅读 · 0 评论 -
力扣刷题16. 最接近的三数之和(Java)
题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).题解:1.先将数组排序 O(nl...原创 2019-09-04 11:28:35 · 312 阅读 · 0 评论 -
力扣刷题15. 三数之和(Java)
题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路暴力法搜索为 ...原创 2019-09-03 05:04:17 · 440 阅读 · 0 评论 -
力扣刷题14. 最长公共前缀(Java)
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。思路:1.暴力法 一个前缀一个前缀的过在数组中...原创 2019-09-01 16:17:58 · 386 阅读 · 0 评论 -
力扣刷题11.盛最多水容器(Java)
11.Container With Most Water盛最多水容器Given n non-negative integers a1, a2, …, an , where each represents apoint at coordinate (i, ai). n vertical lines are drawn such that the twoendpoints of line i ...原创 2019-09-01 15:36:34 · 218 阅读 · 0 评论 -
力扣刷题9.回文数(Java)
英文题目Palindrome NumberDetermine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.一个整数 backward 以后还是 这个数Example1:Input: 121Output: trueE...原创 2019-08-31 15:38:01 · 248 阅读 · 0 评论 -
力扣刷题8.字符串变整形(Java)
英文题目String to Integer (atoi)Implement atoi which converts a string to an integer.实现 atoi 能够使 字符串变为 整形The function first discards as many whitespace characters as necessary until the first non-whit...原创 2019-08-30 09:16:59 · 197 阅读 · 0 评论 -
力扣刷题6.Z 字形变换
英文题目ZigZag ConversionThe string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)将一个给...原创 2019-08-30 08:19:09 · 207 阅读 · 0 评论