![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笨比的力扣刷题笔记
wrysunny_bc
这个作者很懒,什么都没留下…
展开
-
每日一练--有效字母的异位词
类似这种查询问题都可以使用哈希表来进行解决,也就是数组,set和unordered_map当数据量大时可以使用unordered_set,需要返回下标时使用unordered_map对于此题目来说,由于字母只有26个小写字母,所以我使用了数组进行求解,又因为我记不住字母对应的值,因此我进行了取巧的做法,我让数组存储为 该位置字母-'a'实现代码如下class Solution {public: bool isAnagram(string s, string t) {int ar原创 2022-02-03 22:23:50 · 455 阅读 · 0 评论 -
每日一练--两数之和
经典第一题,要求返回和为目标值的两数的下标,那么可以考虑使用哈希表来进行题解.当要求返回下标时,首先应该使用unordered_map,存放的是<T, T>此题代码如下:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int>map; for(int i = 0;i <原创 2022-02-02 22:27:44 · 199 阅读 · 0 评论 -
每日一练--删除链表的结点
剑指Offer 18相比于原有的移除链表中元素,其只有一个结点需要移除,因此代码相比于原题有所改变,需要加上一行代码该题代码如下class Solution {public: ListNode* deleteNode(ListNode* head, int val) { ListNode * DummyHead = new ListNode(0); DummyHead->next = head; ListNode * cur ..原创 2022-02-01 22:25:02 · 56 阅读 · 0 评论 -
每日一练--环形链表
力扣142对于环形链表来说,我们可以设置两个指针,一个快指针和一个慢指针当快指针向前移动两步的时候,慢指针使其向前移动一步,这样相当于快指针始终在以一步接近慢指针,那么快慢指针在有环的时候一定是在环中相遇的,并且环的入口就是相遇的位置继续向前与指针从头结点开始一步步向前后相遇的位置.代码如下class Solution {public: ListNode *detectCycle(ListNode *head) { ListNode * Fast = head;原创 2022-02-01 21:41:27 · 536 阅读 · 0 评论 -
每日一练-移除链表元素
力扣203在进行链表的增删时,可以设置一个虚拟头结点,使得这个虚拟的头结点指向原有的头结点,此时就可以进行求解了.代码如下:class Solution {public: ListNode* removeElements(ListNode* head, int val) {ListNode * Node = new ListNode(NULL); //建立头结点Node->next = head; //建立头结点ListNode * cur = Node; /原创 2022-02-01 20:40:52 · 163 阅读 · 0 评论 -
每日一练-数组中的重复数字
对于此类问题来说,我们可以考虑使用哈希表来进行求解,如果使用哈希表,那么我们可以得到代码如下: class Solution {public: int findRepeatNumber(vector<int>& nums) { unordered_map<int,int>map; for(int i = 0;i<nums.size();++i){ if(map[nums[i] > 0){ return map[n原创 2022-01-31 20:16:36 · 162 阅读 · 0 评论 -
每日一练-二叉树中序遍历迭代写法
对于二叉树的中序遍历来说,迭代写法和前序后续都有所不同,此时需要使用指针来进行中序遍历的迭代.二叉树中序遍历的迭代写法如下:vector<int> preorderTraversal(TreeNode* root) {stack <TreeNode*> st;vector<int>result; if(root==nullptr){ return result; } TreeNode * cur=root; whi原创 2022-01-30 19:45:15 · 575 阅读 · 0 评论 -
每日一练-二叉树前序遍历迭代法
如何进行迭代遍历?二叉树的前中后序遍历都可以调用递归进行实现,如果我们了解了递归的定义,就可以知道每次使用递归都会将函数的局部变量,参数的值和返回地址等信息压入调用栈中去,然后当递归返回的时候,从递归栈的栈顶弹出上一次递归的各项参数,所以这就是递归为什么可以返回上一层位置的原因.同理,我们就可以使用栈来对二叉树进行迭代遍历.前序遍历顺序如何?前序遍历遵从根左右的顺序,因为栈为先入后出的数据结构,所以我们的入栈顺序应该为根右左,这样可以保证在出栈时,出栈顺序为根左右.二叉树的前序遍历迭代写法代原创 2022-01-29 18:38:10 · 755 阅读 · 0 评论