合集-代码训练
摘要:704. 二分查找 题目链接:https://leetcode.cn/problems/binary-search/ 文章讲解:https://programmercarl.com/0704.二分查找.html 简单的二分查找法,核心是认识区间的意义,注意以下几点: middle=low+(high
阅读全文
摘要:977.有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/ 错误的vector遍历方式,这会导致访
阅读全文
摘要:203.移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 题目链接:203. 移除链表元素 - 力扣(LeetCode) 注意c++中NULL和nullptr的区别。应该用nullptr来表示空
阅读全文
摘要:24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 题目链接:24. 两两交换链表中的节点 - 力扣(LeetCode) 建议画图,会更清晰一些。同时注意交换问题要用两个临时节点。 cla
阅读全文
摘要:哈希表理论基础 242.有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: tr
阅读全文
摘要:454.四数相加II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < n nums1[i] + nums2[j] + nums3[k] + nums4[l] ==
阅读全文
摘要:反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 题目链接:344. 反转字符串 - 力扣(LeetCode) 关于是否用reverse函数解决问题:如果
阅读全文
摘要:28. 实现 strStr() 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 题目链接:28. 找出字符串中第一个匹配
阅读全文
摘要:堆栈理论基础 代码随想录 (programmercarl.com) STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)。栈的内部结构,栈的底层实现可以是vector,deque,list 都是可以的, 主要就是数组和链表的底层实现。 我们常用的SGI STL,如
阅读全文
摘要:20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 题目链接:20. 有效的括号 - 力扣(Leet
阅读全文
摘要:239. 滑动窗口最大值 题目链接:239. 滑动窗口最大值 - 力扣(LeetCode) 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 思路:首先在不考虑
阅读全文
摘要:理论基础 代码随想录 (programmercarl.com) 二叉树的链接形式定义(防忘) struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right
阅读全文
摘要:层序遍历 102. 二叉树的层序遍历 - 力扣(LeetCode) 思路:结合了昨天学到的标记法,每当一层遍历完,向队列中添加一个NULL标记。遍历到NULL节点表示该层遍历完了,将结果存入结果集中。 /** * Definition for a binary tree node. * struct
阅读全文
摘要:104.二叉树的最大深度 题目链接:104. 二叉树的最大深度 - 力扣(LeetCode)n叉树也一样 思路:我的普通递归方法 class Solution { public: int depth(TreeNode* node,int d){ int l=0,r=0; if(node->left=
阅读全文
摘要:110.平衡二叉树 题目链接:110. 平衡二叉树 - 力扣(LeetCode) 思路:判断平衡二叉树,就是判断两个子树的高度差,继而问题转化为了如何求子树的高度——后序遍历(主要卡在了这里)。递归函数返回的是树的高度,同时用-1来表示退出递归(一开始想着用bool型作为返回值,发现函数不好设计)。
阅读全文
摘要:513.找树左下角的值 题目链接:513. 找树左下角的值 - 力扣(LeetCode) 思路:利用层序遍历,找到最后一层在输出第一个节点 class Solution { public: int findBottomLeftValue(TreeNode* root) { queue<TreeNod
阅读全文
摘要:654.最大二叉树 题目链接:654. 最大二叉树 - 力扣(LeetCode) 思路:普通递,每层递归的思想和快排有类似之处,同时终止条件也和快排相似。但我的写法效率很低。 class Solution { public: TreeNode* traversal(vector<int>nums,i
阅读全文
摘要:530.二叉搜索树的最小绝对差 题目链接:530. 二叉搜索树的最小绝对差 - 力扣(LeetCode) 思路:由于是二叉搜索树,先用中序遍历将节点存入数组中,再遍历数组相邻元素即可。 class Solution { public: void qianxu(TreeNode* root,vecto
阅读全文
摘要:二叉搜索树的最近公共祖先 题目链接:235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode) 思路:只要利用二叉搜索树特性,只要当前节点的值位于要求的两个节点之间,就必定是我们要找的节点。最简单的一集。 class Solution { public: TreeNode* lowestCom
阅读全文
摘要:669.修剪二叉搜索树 题目链接:669. 修剪二叉搜索树 - 力扣(LeetCode) 思路:本题原来想沿用上一次最后一道题的思路,用删除二叉搜索树特定值节点的方法来解决,但是会报错,找不出问题所在(在评论区也是一堆套用450代码报错的)。只能参考官网答案了。 官网的方法没有用delete,但是思
阅读全文