算法基础十

加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

示例 1:
输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0]

解题思路:给定数组代表一个十进制数,数组的0下标是十进制的高位。从数组尾部开始遍历,依次进位。


 public int[] plusOne(int[] digits) {
   
        for (int i = digits.length - 1; i >= 0; i--) {
   
            digits[i]++;
            digits[i] = digits[i] % 10;
            if(digits[i] != 0) {
   
                return digits;
            }
        }

        digits = new int[digits.length + 1];
        digits[0] = 1;
        return digits;
    }

二进制求和

给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

示例 1:
输入:a = “11”, b = “1” 输出:“100”
示例 2:
输入:a = “1010”, b = “1011” 输出:“10101”

    public String addBinary(String a, String b) {
   
        StringBuffer ans = new StringBuffer();

        int n = Math.max(a.length(), b.length()), carry = 0;
        for (int i = 0; i < n; ++i) {
   
            carry += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0;
            carry += i < b.length() ? (b.charAt(b.length() - 1 - i) - '0') : 0;
            ans.append((char) (carry % 2 + '0'));
            carry /= 2;
        }

        if (carry > 0) {
   
            ans.append('1');
        }
        ans.reverse();

        return ans.toString();
    }

x 的平方根

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

示例 1:
输入:x = 4 输出:2
示例 2:
输入:x = 8 输出:2


   public int mySqrt(int x) {
   
        if (x == 0) {
   
            return 0;
        }
        int ans = (int) Math.exp(0.5 * Math.log(x));
        return (long) (ans + 1) * (ans + 1) <= x ? ans + 1 : ans;
    }

爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:
输入:n = 2 输出:2
示例 2:
输入:n = 3 输出:3

解题思路:动态规划


    public int climbStairs(int n) {
   
        int p = 0, q = 0, r = 1;
        for (int i = 1; i <= n; ++i) {
   
            p = q; 
            q = r; 
            r = p + q;
        }
        return r;
    }

颜色分类

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。

示例 1:
输入:nums = [2,0,2,1,1,0] 输出:[0,0,1,1,2,2]
示例 2:
输入:nums = [2,0,1] 输出:[0,1,2]

解题思路:计数排序

 public void sortColors(int[] nums) {
   
        int n = nums.length;
        int ptr = 0;
        for (int i = 0; i < n; ++i) {
   
            if (nums[i] == 0) {
   
                int temp = nums[i];
                nums[i] = nums[ptr];
                nums[ptr] = temp;
                ++ptr;
            }
        }
        for (int i = ptr; i < n; ++i) {
   
            if (nums[i] == 1) {
   
                int temp = nums[i];
                nums[i] = nums[ptr];
                nums[ptr] = temp;
                ++ptr;
            }
        }
    }

相关推荐

  1. 算法基础

    2023-12-11 20:22:02       43 阅读
  2. 算法基础

    2023-12-11 20:22:02       52 阅读
  3. 算法基础

    2023-12-11 20:22:02       52 阅读
  4. 算法基础

    2023-12-11 20:22:02       54 阅读
  5. 算法基础

    2023-12-11 20:22:02       47 阅读
  6. 算法集训】基础数据结构:、矩阵

    2023-12-11 20:22:02       71 阅读
  7. 算法集训】基础数据结构:一、邻接矩阵

    2023-12-11 20:22:02       71 阅读
  8. 算法集训】基础数据结构:二、邻接表

    2023-12-11 20:22:02       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 20:22:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 20:22:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 20:22:02       87 阅读
  4. Python语言-面向对象

    2023-12-11 20:22:02       96 阅读

热门阅读

  1. 以为回调函数是同步的(js的问题)

    2023-12-11 20:22:02       87 阅读
  2. K8S学习指南-minikube的安装

    2023-12-11 20:22:02       49 阅读
  3. angular material mat-error 失效不展示

    2023-12-11 20:22:02       55 阅读
  4. CSS height auto 过渡

    2023-12-11 20:22:02       56 阅读
  5. 常用的C语言宏定义

    2023-12-11 20:22:02       63 阅读
  6. 牛客挑战赛 B - 树上博弈 -- 题解

    2023-12-11 20:22:02       71 阅读
  7. Python:合并两个PDF文件为一个PDF

    2023-12-11 20:22:02       57 阅读
  8. 涂卡——位运算

    2023-12-11 20:22:02       56 阅读
  9. 【力扣】刷题备忘录-动归-96. 不同的二叉搜索树

    2023-12-11 20:22:02       70 阅读
  10. SCAU:18051 勾股数

    2023-12-11 20:22:02       58 阅读