力扣-腾讯精选练习50题
小鬼识途
一直在学习
展开
-
力扣-腾讯精选练习50题C++-217存在重复元素
题目描述给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。1.哈希,判断key值是否大于1class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_map <int,int>mp; for(int i:nums) ...原创 2020-05-09 00:24:24 · 240 阅读 · 0 评论 -
力扣-腾讯精选练习50题C++-206反转链表
题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。方法一:迭代在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引用!/** * Definition for sin原创 2020-05-09 00:13:45 · 202 阅读 · 0 评论 -
力扣-腾讯精选练习50题C++-169多数元素
题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。方法一:哈希表我们知道出现次数最多的元素大于[n/2]次,所以可以用哈希表来快速统计每个元素出现的次数。我们使用哈希映射(HashMap)来存储每个元素以及出现的次数。对于哈希映射中的每个键值对,键表示一个元素,值...原创 2020-05-05 18:12:45 · 350 阅读 · 0 评论 -
力扣-腾讯精选练习50题C++-160相交链表
题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。分析截去较长链表前面多的部分,然后往后依次比较两个等长链表的元素。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...原创 2020-05-05 18:00:57 · 211 阅读 · 0 评论 -
力扣-腾讯精选练习50题C++-155最小栈
最小栈设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.pus...原创 2020-05-05 17:52:57 · 247 阅读 · 0 评论 -
力扣-腾讯精选练习50题C++-141环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。/** * Definition for singly-linke...原创 2020-05-05 16:59:32 · 186 阅读 · 0 评论 -
力扣-腾讯精选练习50题C++-136只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 41. 暴力时间复杂度O(n^2) 空间复杂度O(n) 。2. 快速排序class Solution {public: int singleNumber(ve...原创 2020-05-05 16:46:22 · 196 阅读 · 0 评论 -
力扣-腾讯精选练习50题C++-122买卖股票的最佳时机 II
题目描述给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1: 输入: [7,1,5,3,6,4],输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...原创 2020-05-05 11:30:03 · 135 阅读 · 0 评论 -
力扣-腾讯精选练习50题C++-21合并两个有序链表
题目描述将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * struct ListNode { * i...原创 2020-05-05 11:04:41 · 270 阅读 · 1 评论 -
力扣-腾讯精选练习50题C++-53最大子序和
题目描述:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。分析:动态规划。dp[i]表示以第 i 个元素结尾的连续子数组的最大和。class Solution {public: ...原创 2020-05-03 16:55:21 · 249 阅读 · 0 评论