LEETCODE
茶味有点淡
这个作者很懒,什么都没留下…
展开
-
leetcode-279-完全平方数
2020-9-11这道题是经典的动态规划问题-零钱问题的变种,比零钱问题多一步计算完全平方数。采用自底向上动态规划的思想,状态转移方程即从n-平方数时的dp转移到n时的dp。class Solution {public: int numSquares(int n) { vector<int>dp(n+1,n+1); dp[0] = 0; vector<int>pows = get_pow(n); fo原创 2020-09-11 17:28:16 · 66 阅读 · 0 评论 -
leetcode-2-两数相加
2020-9-5这道两数相加以链表为数据结构,核心考察点在于对于进位的处理,遍历链表即可。有一个取巧的方法是先生成节点让两个链表等长,这样可以避免后续对于链表不同时结束遍历的处理。这道题耗费了两天时间,我发现自己对于链表的掌握还是不够透彻,而且总会选择一些看似投机取巧实则弄巧成拙的方法。https://leetcode-cn.com/problems/add-two-numbers//** * Definition for singly-linked list. * struct List原创 2020-09-05 18:00:28 · 61 阅读 · 0 评论 -
leetcode-9-回文数
2020-9-3经典题目却一波三折,提交的时候忽略了负数的样例,偷懒用了string和stl,只是逐位把数字加入到字符串中。https://leetcode-cn.com/problems/palindrome-number/class Solution {public: bool isPalindrome(int x) { if(x < 0) return false; string s1 = ""; w原创 2020-09-03 22:06:40 · 72 阅读 · 0 评论 -
leetcode-剑指offer55-I-二叉树的深度
2020-9-2这道题是经典的求二叉树深度问题,有递归和非递归两种解法。递归的思想就是二叉树的深度等于左右子树深度的最大值加一。非递归的话就类似于广度优先搜索,将每个节点的左右子树加入队列,当一层节点遍历结束后深度加一https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof//** * Definition for a binary tree node. * struct TreeNode { * int val;原创 2020-09-02 10:14:38 · 88 阅读 · 0 评论 -
leetcode-414-第三大的数
2020-8-21这道题因为题目说是O(n)的时间复杂度,所以没有使用sort和set或者map,如果使用排序或者查找的话时间复杂度都在O(n2)。所以处理方法是遍历元素的时候通过三个变量来存储最大的三个数。这道题测试用例的坑在于有测试用例超过了INT_MIN的取值范围,所以只能改为使用LONG_MIN类型https://leetcode-cn.com/problems/third-maximum-number/class Solution {public: int thirdMax原创 2020-08-21 09:32:45 · 67 阅读 · 0 评论 -
leetcode-217-存在重复元素
2020-8-17这道题挺容易的。我的解法是建立一个set集合用于查找重复元素,在建立集合的同时查找是否有重复元素,有的话立即return true,等到跳出循环则意味着没有重复元素,return false。https://leetcode-cn.com/problems/contains-duplicate/class Solution {public: bool containsDuplicate(vector<int>& nums) { u原创 2020-08-17 10:21:46 · 103 阅读 · 0 评论 -
leetcode-88-合并两个有序数组
2020-8-16最开始使用插入并移动数组元素的方法,后来我发现这个题目有投机取巧的方法,可以用很短的代码解决问题。用vector的erase删除nums1中的0元素,再将nums2元素逐个插入到nums1中,最后调用sort进行排序即可解决。https://leetcode-cn.com/problems/merge-sorted-array/class Solution {public: void merge(vector<int>& nums1, int原创 2020-08-16 09:58:57 · 71 阅读 · 0 评论 -
leetcode-66-加一
2020-8-15debug了半个多小时还是会出现内存堆栈溢出现象,看了看大佬的题解,简直赏心悦目,简洁明了,再看看我写的代码,虽然思路一样,但是真的不堪入目,说是垃圾代码一点都不过分。题目其实不难,就是跑一个for循环,再来一个插入操作。https://leetcode-cn.com/problems/plus-one/class Solution {public: vector<int> plusOne(vector<int>& digits) {原创 2020-08-15 10:48:50 · 85 阅读 · 0 评论 -
leetcode-35-搜索插入位置
2020-8-14这道题非常简单,一个for循环即可解决,也没有什么难点https://leetcode-cn.com/problems/search-insert-position/class Solution {public: int searchInsert(vector<int>& nums, int target) { int ans; for(int i=0;i<nums.size();i++) {原创 2020-08-14 14:39:43 · 79 阅读 · 0 评论 -
leetcode-剑指offer59-I 滑动窗口的最大值
2020-8-13这道题我实在没想到什么好方法,就暴力求解了。看了题解才知道stl里面还有双端队列这个数据结构,可是还是没看懂大佬们怎么用,只知道大概是维护了一个最小栈。等过几天更新大佬们的解法。https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/暴力解法class Solution {public: int get_Max(queue<int> que) {原创 2020-08-13 16:50:20 · 227 阅读 · 0 评论 -
leetcode-1441-用栈操作构建数组
2020-8-12这道题看似复杂,实则不难。我的解法是通过一个循环,找到1-n中在target中的元素,每当找到以后就加入一个“Push”到返回数组中,没有找到就加“Push”和“Pop”到返回数组中。循环终止条件是遍历到target末尾。https://leetcode-cn.com/problems/build-an-array-with-stack-operations/submissions/class Solution {public: vector<string&g原创 2020-08-12 11:17:02 · 149 阅读 · 0 评论 -
leetcode-面试题03.02-栈的最小值
2020-8-11这道题的解题思路就是存数的同时存最小值。有两种数据结构的构建思路,一种是建立一个pair<int,int>类型的栈,直接将数值和最小值存入一个栈;另一种是使用双栈,一个数值栈一个最小值栈,在存数值的同时将最小值压栈,出栈时一起出栈,就可以保证辅助栈的栈顶元素始终是栈中所有元素的最小值。https://leetcode-cn.com/problems/min-stack-lcci/class MinStack {public: /** initialize原创 2020-08-11 12:21:59 · 91 阅读 · 0 评论 -
leetcode-面试题02.07-链表相交
2020-8-8与之前的链表相交题目一样,还是使用双指针,当遍历到一个表的表尾时就指向另一个表的表头,这样可以保证两个指针走过的路程相同,与物理中的相遇问题思路是相同的。https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci/submissions/...原创 2020-08-08 09:45:35 · 648 阅读 · 0 评论 -
leetcode-面试题02.02-返回倒数第k个节点
2020-8-7与剑指offer22一样。快慢指针,让快指针先找到第k个位置,然后两个指针同时开始移动,当快指针到达最后一个节点的next即为NULL时慢指针所指节点就是倒数第k个节点。画图理解更为清晰。https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci/...原创 2020-08-07 11:55:48 · 682 阅读 · 0 评论 -
leetcode-面试题02.06-回文链表
2020-8-6我的解法是把链表值存到字符串和栈中,如果出栈数字组成的字符串和原字符串相等,就意味着是回文链表。最优题解是先用快慢指针找到中点,再对后半段链表进行反转链表,最后用双指针对前后两段链表进行逐个比较https://leetcode-cn.com/problems/palindrome-linked-list-lcci/submissions/...原创 2020-08-06 19:26:29 · 139 阅读 · 0 评论 -
leetcode-面试题02.01-移除重复节点
我的方法是用map记录节点的值,将第一次出现的值的节点用尾插法插入到一个新的链表中另一个方法,用set查重复值,在当前链表上直接进行删除https://leetcode-cn.com/problems/remove-duplicate-node-lcci/...原创 2020-08-05 12:24:15 · 108 阅读 · 0 评论 -
leetcode-剑指offer-两个链表的第一个公共节点
2020-8-3双指针法在各自的指针到达尾节点时令他指向另一个链表的头节点https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/submissions/原创 2020-08-04 16:59:58 · 75 阅读 · 0 评论 -
leetcode-剑指offer24-反转链表
2020-8-4新建头节点,对原链表节点使用头插法达到反转的目的https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/submissions/原创 2020-08-04 12:33:00 · 78 阅读 · 0 评论 -
leetcode-剑指offer22-链表中倒数第k个节点
用快慢指针法做题。先让快指针跑k个节点,再同时递增快慢指针。https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/原创 2020-08-03 13:04:42 · 98 阅读 · 0 评论