记24.11.01的数学相关算法题

一, 2469.温度转换

给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度Celsius)为单位。

你需要将摄氏度转换为 开氏度Kelvin)和 华氏度Fahrenheit),并以数组 ans = [kelvin, fahrenheit] 的形式返回结果。

返回数组 ans 。与实际答案误差不超过 10-5 的会视为正确答案

注意:

  • 开氏度 = 摄氏度 + 273.15
  • 华氏度 = 摄氏度 * 1.80 + 32.00

示例 1 :

输入:celsius = 36.50
输出:[309.65000,97.70000]
解释:36.50 摄氏度:转换为开氏度是 309.65 ,转换为华氏度是 97.70 。

示例 2 :

输入:celsius = 122.11
输出:[395.26000,251.79800]
解释:122.11 摄氏度:转换为开氏度是 395.26 ,转换为华氏度是 251.798 。

我的解法:

class Solution {

    public double[] convertTemperature(double celsius) {

        return new double[]{celsius+273.15,celsius*1.80+32.00};

    }

}

思考:

  • double[]:这是方法的返回类型,表示此方法将返回一个 double 数组。该数组可能用于存储转换后的温度值。
  • (double celsius):这是方法的参数列表,表示方法接收一个 double 类型的参数 celsius

二,2235两整数相加

给你两个整数 num1 和 num2,返回这两个整数的和。

示例 1:

输入:num1 = 12, num2 = 5
输出:17
解释:num1 是 12,num2 是 5 ,它们的和是 12 + 5 = 17 ,因此返回 17 。

示例 2:

输入:num1 = -10, num2 = 4
输出:-6
解释:num1 + num2 = -6 ,因此返回 -6 。

我的解法:

class Solution {

    public int sum(int num1, int num2) {

        return num1+num2;

    }

}

思考:

(int num1, int num2):这是方法的参数列表,表示该方法接收两个整数参数 num1 和 num2

       

三,2413最小偶倍数

给你一个正整数 n ,返回 2  n 的最小公倍数(正整数)。

示例 1:

输入:n = 5
输出:10
解释:5 和 2 的最小公倍数是 10 。

示例 2:

输入:n = 6
输出:6
解释:6 和 2 的最小公倍数是 6 。注意数字会是它自身的倍数。

我的解法:

class Solution {

    public int smallestEvenMultiple(int n) {

        return n%2==0? n:n*2;

    }

}

思考:

方法体

return n % 2 == 0 ? n : n * 2;
  • 条件判断n % 2 == 0 用于检查 n 是否为偶数。
  • 三元运算符
    • 如果 n 是偶数,返回 n 本身。
    • 如果 n 是奇数,返回 n * 2(即 n 的下一个偶数)

四,2160拆分数位后四位数字的最小和 

给你一个四位  整数 num 。请你使用 num 中的 数位 ,将 num 拆成两个新的整数 new1 和 new2 。new1 和 new2 中可以有 前导 0 ,且 num 中 所有 数位都必须使用。

  • 比方说,给你 num = 2932 ,你拥有的数位包括:两个 2 ,一个 9 和一个 3 。一些可能的 [new1, new2] 数对为 [22, 93][23, 92][223, 9] 和 [2, 329] 。

请你返回可以得到的 new1 和 new2 的 最小 和。

示例 1:

输入:num = 2932
输出:52
解释:可行的 [new1, new2] 数对为 [29, 23] ,[223, 9] 等等。
最小和为数对 [29, 23] 的和:29 + 23 = 52 。

示例 2:

输入:num = 4009
输出:13
解释:可行的 [new1, new2] 数对为 [0, 49] ,[490, 0] 等等。
最小和为数对 [4, 9] 的和:4 + 9 = 13 。

我的解法:

class Solution {

    public int minimumSum(int num) {

        int[] arr = new int[4];

        for(int i = 0;i<4;i++){

            arr[i]=num%10;

            num/=10;

        }

        Arrays.sort(arr);

        int nums1 = arr[0]*10 +arr[3];

        int nums2 = arr[1]*10 +arr[2];

        return nums1 + nums2;

    }

}

思考:

Arrays.sort(arr); 的意思是对名为 arr 的数组进行排序。具体来说,这行代码会将数组 arr 中的元素按升序排列。

将四位数字按大小排序后,取更小的数字做为十位上的数字,再将两个两位数相加,可得到答案最小值。

巧用for循环逐次分离出四位数字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值