Leetcode刷题
尘埃飞舞
凡心所向,素履以往;
生如逆旅,一苇以航。
展开
-
232. 用栈实现队列
3:pop时候,输出栈如果为空,就把进栈数据全部导入进去,在从出栈弹出数据,如果输出栈不为空,则直接从出栈中弹出数据即可。4:判空,如果输入栈与输出栈都为空说明模拟队列为空。2:push数据的时候数据放到输入栈即可。方法一:主要写pop,peek复用pop。方法二:主要写peek,pop复用pop。1:需要两个栈来实现输入栈以及输出栈。原创 2024-03-26 23:37:33 · 142 阅读 · 0 评论 -
LeetCode-数组-54. 螺旋矩阵
54. 螺旋矩阵解题思路:这里的方法不需要记录已经走过的路径,所以执行用时和内存消耗都相对较小首先设定上下左右边界其次向右移动到最右,此时第一行因为已经使用过了,可以将其从图中删去,体现在代码中就是重新定义上边界判断若重新定义后,上下边界交错,表明螺旋矩阵遍历结束,跳出循环,返回答案若上下边界不交错,则遍历还未结束,接着向下向左向上移动,操作过程与第一,二步同理不断循环以上步骤,直到某两条边界交错,跳出循环,返回答案class Solution {public: vector<原创 2021-11-13 10:41:34 · 466 阅读 · 0 评论 -
LeetCode-位运算-36. 只出现一次的数字
136. 只出现一次的数字思路一:异或,当不同的数异或肯定会保留下来,相同的数异或之后,就会相互抵消。class Solution {public: int singleNumber(vector<int>& nums) { int res = 0; for(int i=0;i<nums.size();i++){ res = res ^nums[i]; } return res;原创 2021-11-04 14:31:08 · 90 阅读 · 0 评论 -
LeetCode-数学-9. 回文数
9. 回文数思路一:先使用vector容器存下每一位的数据,在判断容器里面首尾是否相等class Solution {public: bool isPalindrome(int x) { if(x<0) return false; vector<int> data; while(x!=0){ int temp = x%10; x = x/10; data.原创 2021-10-22 22:47:30 · 150 阅读 · 0 评论 -
LeetCode-数组-35. 搜索插入位置
描述35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 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示例 4:输入: nums = [1,原创 2021-08-23 14:39:32 · 118 阅读 · 0 评论 -
LeetCode-数组-189. 旋转数组
描述189. 旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 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,原创 2021-09-01 15:31:11 · 82 阅读 · 0 评论 -
力扣(Leetcode)-94. 二叉树的中序遍历
描述给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100思路一:递归原创 2021-08-19 11:10:42 · 101 阅读 · 1 评论 -
力扣(Leetcode)-2. 两数相加
描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:思路一:常规思路,用链表记录考虑进位,注意边界条件,具体注释在如下代码中/** * Definition for singly-linked list. * struct ListNode { * int val; * List原创 2021-08-18 22:15:25 · 82 阅读 · 0 评论 -
力扣(leetcode)-1. 两数之和
描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。思路一:暴力枚举(线性查找)暴力枚举法两层for循环找目标值,不是最优的解法时间复杂度:O(n^2)空间复杂度:O(1)class Solution {public: vector<int> twoSum(vecto原创 2021-08-18 16:24:15 · 225 阅读 · 0 评论