力扣319周赛---6233.温度转换,6234.最小公倍数为k的子数组数目

133 阅读2分钟

Leetcode6233.温度转换

链接:leetcode.cn/problems/co…

给你一个四舍五入到两位小数的非负浮点数 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的子数组数目

链接:leetcode.cn/problems/nu…

给你一个整数数组 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);

}

}