Leetcode6233.温度转换
给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度(Celsius)为单位。
你需要将摄氏度转换为 开氏度(Kelvin)和 华氏度(Fahrenheit),并以数组 ans = [kelvin, fahrenheit] 的形式返回结果。
返回数组 ans 。与实际答案误差不超过 10-5 的会视为正确答案 。
注意:
开氏度 = 摄氏度 + 273.15华氏度 = 摄氏度 * 1.80 + 32.00
输入: celsius = 36.50
输出: [309.65000,97.70000]
解释: 36.50 摄氏度:转换为开氏度是 309.65 ,转换为华氏度是 97.70 。
思路
本题很简单,只需要简单的转换就可以了。根据公式可知,直接转换即可
代码实现
class Solution {
public double[] convertTemperature(double celsius) {
return new double[]{celsius+273.15,celsius*1.80+32.00};
}
}
注意问题
要注意返回数组的形式
Leetcode6234.最小公倍数为k的子数组数目
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 nums 的 子数组 中满足 元素最小公倍数为 k 的子数组数目。
子数组 是数组中一个连续非空的元素序列。 数组的最小公倍数 是可被所有数组元素整除的最小正整数。
输入: nums = [3,6,2,7,1], k = 6
输出: 4
解释: 以 6 为最小公倍数的子数组是:
- [3,6,2,7,1]
- [3,6,2,7,1]
- [3,6,2,7,1]
- [3,6,2,7,1]
思路
本题分两步
第一步:找所有连续子数组
第二步:找最小公倍数为k的连续子数组
第一步:循环遍历数组,找出
概念分析
最小公倍数least common multiple:若(36,24)他俩的最小公倍数是72
最大公约数greatest common divisor:若(36,24)他俩的最大公约数为12
最大公约数可以用欧几里得算法,然后最小公倍数可以用最大公约数推出来
代码实现
class Solution {
public int subarrayLCM(int[] nums, int k) {
int count=0;
for(int i=0;i<nums.length;i++){
int num=nums[i];
for(int j=i;j<nums.length;j++){
num=lcm(num,nums[j]);
if(num==k)count++;
else if(num>k)
break;
}
}
return count;
}
public int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
public int lcm(int a,int b){
return a*b/gcd(a,b);
}
}