当前位置:首页 » 《随便一记》 » 正文

【Leetcode】题库-爽刷简单题(1)

10 人参与  2023年05月06日 15:45  分类 : 《随便一记》  评论

点击全文阅读


目录

写在前面:

题目:67. 二进制求和 - 力扣(Leetcode)

解题思路:

代码:

过过过过过过啦!!!!

题目:83. 删除排序链表中的重复元素 - 力扣(Leetcode)

解题思路:

代码:

过过过过过过啦!!!!

写在最后:


写在前面:

无论是你学习累了,还是情绪低落,还是生活不如意,哪怕是失恋了,跟我一起,放下生活的

担,打开LeetCode,点开题库,选择简单题,快点这个链接,和我一起享受刷题的快乐!

题目:67. 二进制求和 - 力扣(Leetcode)

解题思路:

这道题目其实就是,让我们用代码去模拟二进制的运算,

那我们就想一想二进制该咋算,

根据小学数学学的知识,要从左往右计算两数相加,

当每一位相加的值大于进制,那就进位,

为了防止因为两个二进制的大小不同,导致相加的时候一个数加完了,

另一个还没加完,

1. 我们首先计算两数长度,将小的那个数往前补零,让两个数等长

2. 然后从左往右相加,如果相加值需要进位那就进位即可

下面是代码:

代码:

class Solution {public:    string addBinary(string a, string b) {        //计算他们的长度        int alen = a.size();        int blen = b.size();        //在短的字符串前补零,让他们等长,之后好比较计算        while(alen < blen)        {            a = '0' + a;            alen++;        }        while(alen > blen)        {            b = '0' + b;            blen++;        }        //从后往前遍历字符串,并相加进位        for(int j = a.size() - 1; j > 0; j--)        {            a[j] = a[j] - '0' + b[j];            if(a[j] > '1')            {                a[j] = (a[j] - '0') % 2 + '0';                a[j - 1] = a[j - 1] + 1;            }        }        //字符串第零位单独操作,相加        a[0] = a[0] - '0' + b[0];        //进位        if(a[0] > '1')        {            a[0] = (a[0] - '0') % 2 + '0';            a = '1' + a;        }        return a;    }};

过过过过过过啦!!!!

题目:83. 删除排序链表中的重复元素 - 力扣(Leetcode)

解题思路:

那么这道题啊,就是删除链表的重复项,

那么对于一个简单题来说,

我建议是不要带脑子,

我们直接无脑遍历链表,然后把出现过的数组成一个新链表就行,

因为题目说这是一个排序过的数组,所以重复的数字都是连在一起的,

只需要临时记录一下那个数字是否重复就能防止重复插入。

我个人更喜欢搞个哨兵位再尾插,你们带不带就看个人习惯了,

最后返回那个新链表的头就行。

下面是代码:

代码:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode() : val(0), next(nullptr) {} *     ListNode(int x) : val(x), next(nullptr) {} *     ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */class Solution {public:    ListNode* deleteDuplicates(ListNode* head) {        //判断空链表        if(!head)        {            return nullptr;        }        //建一个哨兵位的头结点        ListNode* newhead = new ListNode;        //cur用来遍历原链表        ListNode* cur = head;        //先头插一个数据        newhead->next = cur;        //prev用来遍历新链表        ListNode* prev = cur;        //遍历原链表        while(cur)        {            //如果节点的值重复就继续遍历,如果不同就尾插进新链表            if(cur->val != prev->val)            {                prev->next = cur;                prev = prev->next;            }            cur = cur->next;        }        //尾结点指向空        prev->next = nullptr;        //换头(其实可以不换的啦)        head = newhead->next;        return head;    }};

过过过过过过啦!!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。


点击全文阅读


本文链接:http://zhangshiyu.com/post/61174.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1