LeetCode
_MaL
少年二字应与平庸相斥
展开
-
--刷题日常
两个栈实现队列class MyQueue {public: stack<int> In; stack<int> Out; MyQueue() { } void push(int x) { In.push(x); } int pop() { if(Out.empty()) { while(!In.empty())原创 2021-12-01 23:42:50 · 209 阅读 · 0 评论 -
LeetCode: 搜索二维矩阵 II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。1.暴力遍历匹配class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { for(auto &i:matrix) {原创 2021-10-25 20:30:03 · 132 阅读 · 0 评论 -
Leetode: 链表相交
题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。思路A长度为 a, B长度为b, 假设存在交叉点,此时 A到交叉点距离为 c, 而B到交叉点距离为d后续交叉后长度是一样的,那么就是 a-c = b-d -> a+d = b+c这里意味着只要分别让A和B额外多走一遍B和转载 2021-10-19 21:21:12 · 90 阅读 · 0 评论 -
LeetCode: 删除链表的倒数第 N 个结点
题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?思路:快慢指针,快指针先走n步,然后一起到结尾,慢指针所指的即为倒数第n个节点。class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { //if(head == nullptr || head->next == nullptr) return head;原创 2021-10-19 20:13:18 · 94 阅读 · 0 评论 -
LeetCode:两两交换链表元素
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换思路:class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode *vcur = new ListNode(0); vcur->next = head; ListNode*cur = vcur;原创 2021-10-19 18:36:17 · 260 阅读 · 0 评论 -
LeetCode: 反转链表
题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表class Solution {public: ListNode* reverseList(ListNode* head) { return reverse(nullptr,head); } ListNode* reverse(ListNode* pre,ListNode*cur) { if(cur == nullptr) return pre;原创 2021-10-19 16:00:49 · 97 阅读 · 0 评论 -
LeetCode: 移除链表元素
题目:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回新的头节点class Solution {public: ListNode* removeElements(ListNode* head, int val) { while(head != nullptr && head->val == val)//删除头节点 { ListNode*tm原创 2021-10-19 15:42:39 · 99 阅读 · 0 评论 -
LeetCode: 最长不含重复字符的子字符串
题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列原创 2021-09-23 13:57:54 · 159 阅读 · 0 评论 -
LeetCode: 链表中倒数第k个节点
题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.思路:快慢指针struct ListNode { int val; ListNode* next; ListNode原创 2021-09-22 20:25:53 · 104 阅读 · 0 评论 -
Leetcode: 买卖股票的最佳时机
题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是原创 2021-09-15 23:37:10 · 120 阅读 · 0 评论 -
Leetcode: 旋转数组
题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步:[7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释:向右旋转 1 步: [9原创 2021-09-15 22:24:46 · 90 阅读 · 0 评论 -
Leetcode:有序数组的平方
题目:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= nums.length <= 104-104 &原创 2021-09-15 20:46:52 · 88 阅读 · 0 评论 -
Leetcode: 爬楼梯
题目:数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例 1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15。示例 2:输入:cost原创 2021-09-15 19:24:25 · 99 阅读 · 0 评论 -
Leetcode: 第 N 个泰波那契数
题目:泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例 1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1 = 2T_4 = 1 + 1 + 2 = 4示例 2:输入:n = 25输出:1389537提示:0 <= n <= 37答案保证是一个 32 位整数,即 answer原创 2021-09-15 18:06:55 · 104 阅读 · 0 评论 -
Leetcode: 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数原创 2021-09-14 19:23:32 · 147 阅读 · 0 评论 -
Leetcode: 最长公共前缀
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀提示:1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成string原创 2021-09-13 17:03:20 · 84 阅读 · 0 评论 -
Leetcode: 查找插入位置
题目:给定一个排序的整数数组 nums 和一个整数目标值 target ,请在数组中找到 target ,并返回其下标。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4原创 2021-09-12 17:46:12 · 104 阅读 · 0 评论 -
Leetcode: 错误的集合
题目:集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入:nums = [1,2,2,4]输出:[2,3]示例 2:输入:nums = [1,1]输出:[1,2]提示:2 <= nums.length <= 10原创 2021-09-12 16:28:57 · 78 阅读 · 0 评论