当前位置: 首页 > article >正文

leetcode题目(3)

目录

1.加一

2.二进制求和

3.x的平方根

4.爬楼梯

5.颜色分类

6.二叉树的中序遍历


1.加一

https://leetcode.cn/problems/plus-one/

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int n = digits.size();
        for(int i = n -1;i>=0;--i)
        {
            if(digits[i] != 9)
            {
                ++digits[i];
                for(int j = i + 1;j<n;++j)
                {
                    digits[j] = 0;
                }
                return digits;
            }
        }
        //数组全部为9
        vector<int> ans(n+1);
        ans[0] = 1;
        return ans;
    }
};

2.二进制求和

https://leetcode.cn/problems/add-binary/description/

class Solution {
public:
    string addBinary(string a, string b) {
        int i = a.length() - 1;
        int j = b.length() - 1;
        int carry = 0;
        string builder;
        //循环相加两个字符串相同长度的低位数部分
        while (i >= 0 && j >= 0) {
            int sum = carry;
            std::cout<<"a---"<<a.at(i)-'0'<<std::endl;
            std::cout<<"b---"<<b.at(j)-'0'<<std::endl;
            sum += a.at(i--) - '0';
            sum += b.at(j--) - '0';
            carry = sum / 2; //是否进位
            builder+=to_string((sum % 2));
        }
        // 如果 a 还没遍历完成(a串比b串长),则继续遍历添加 a 的剩余部分
        while (i >= 0) {
            int sum = carry + a.at(i--) - '0';
            carry = sum / 2;
            builder+=to_string(sum % 2);
        }
        // 如果 b 还没遍历完成(b串比a串长),则继续遍历添加 b 的剩余部分
        while (j >= 0) {
            int sum = carry + b.at(j--) - '0';
            carry = sum / 2;
            builder+=to_string(sum % 2);
        }
        //如果 carry 不等于0 还有个进位数没加进去,需要补充
        if (carry == 1) {
            builder+=to_string(carry);
        }
        //反转字符串获得正常结果
        reverse(builder.begin(),builder.end());
        return builder;
    }
};

3.x的平方根

https://leetcode.cn/problems/sqrtx/

class Solution {
public:
    int mySqrt(int x) {
        //使用库中函数
        int sum = sqrt(x);
        return sum;
    }
};

4.爬楼梯

https://leetcode.cn/problems/climbing-stairs/description/

class Solution {
public:
    int climbStairs(int n) {
        //f(x)=f(x-1)+f(x-2);
        int p = 0, q = 0, r = 1;
        for (int i = 1; i <= n; ++i) 
        {
            p = q; 
            q = r; 
            r = p + q;
        }
        return r;
    }
};

5.颜色分类

https://leetcode.cn/problems/sort-colors/description/

class Solution {
public:
    void sortColors(vector<int>& nums) {
        //sort(nums.begin(),nums.end());

        //p0交换0,p1交换1
        int p0 = 0,p1 = 0;
        for(int i = 0;i < nums.size();++i)
        {
            if(nums[i] == 1)
            {
                swap(nums[i],nums[p1]);
                ++p1;
            }
            else if(nums[i] == 0)
            {
                swap(nums[i],nums[p0]);
                if(p0 < p1)
                {
                    swap(nums[i],nums[p1]);
                }
                ++p0;
                ++p1;
            }
        }
    }
};

6.二叉树的中序遍历

https://leetcode.cn/problems/binary-tree-inorder-traversal/description/

class Solution {
public:
    void inorder(TreeNode* root,vector<int>& res)
    {
        if(root == NULL)
            return;
        inorder(root->left,res);
        res.push_back(root->val);
        inorder(root->right,res);
    }

    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> res;
        inorder(root,res);
        return res;
    }
};


http://www.kler.cn/a/465941.html

相关文章:

  • 25年对AI产业的25点预测以及展望思考
  • 数据分享:空气质量数据--哈尔滨
  • Fabric环境部署-Git和Node安装
  • Luma AI 简单几步生成视频
  • OWASP ZAP之API 请求基础知识
  • node内置模块之---path 模块
  • <Uniswap v3 数学洞察>笔记(part 3)
  • MySQL 05 章——排序与分页
  • Ubuntu忘记root密码解决方案
  • .net core强大的列表对比取数
  • Kafka的rebalance机制
  • wx016基于springboot+vue+uniapp的超市购物系统小程序
  • Windows电脑搭建Java版我的世界服务器并实现异地远程联机游戏
  • 【行空板K10】利用Nanomq的桥接转发能力实现接入任意的MQTT服务器
  • 探索新一代Web框架:模块化与微服务化的完美结合
  • 设计心得——流程图和数据流图绘制
  • 基于Java的银行排号系统的设计与实现【源码+文档+部署讲解】
  • Scratch教学作品 | 白水急流——急流勇进,挑战反应极限! ‍♂️
  • python 中的 json 库使用
  • C++编程库与框架实战——ZeroMQ消息队列
  • 在Linux下安装部署Tomcat教程
  • Python | 学习type()方法动态创建类
  • B2B营销的新篇章:开源AI智能名片S2B2C商城小程序的应用探索
  • CDP集成Hudi实战-编译部署
  • gozero框架crm系统中的查询条件动态筛选业务设计与实践
  • unity学习5:创建一个自己的3D项目