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

目录

写在前面:

题目: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;
    }
};

过过过过过过啦!!!!

写在最后:

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

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

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

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

Leetcode题库是一个包含了各种算法和数据结构问的在线题库,供程序员练习和提升技能使用。这个题库中涵盖了大量的目,包括但不限于图遍历、最短路径、有效的括号、字符串解码、Z字形变换、最长公共前缀、字符串相乘、颠倒字符串中的单词、比较版本号、反转字符串、压缩字符串、验证IP地址等等。它提供了java实现的leetcode解法,这些解法的代码规范,可读性良好,并且其中的解法思想并不受语言限制。通过解决这些目,程序员可以提高自己的算法和编码能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [leetcode题库-leetcode-java:LeetcodeJava代码](https://download.csdn.net/download/weixin_38661100/19901136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [LeetCode算法整理(200左右)](https://blog.csdn.net/qq_38253797/article/details/126827454)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戊子仲秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值