Leetcode19双周赛
程序员文章站
2022-07-12 12:08:55
...
本次排名:289/1120
第一题:5311. 将数字变成 0 的操作次数
解题思路:直接利用一个while,在里面进行判断即可
class Solution {
public int numberOfSteps (int num) {
int ans = 1;
while (num!=1){
if (num%2==0)num/=2;
else num--;
ans++;
}
return ans;
}
}
第二题:5312. 大小为 K 且平均值大于等于阈值的子数组数目
解题思路:一开始看到题目以为是能够交换数组位置的,没想到是直接在原数组进行截取即可,这就简单很多了。利用双指针,做一个滑动窗口,滑动窗口的大小为k,然后统计一下评价值,进行简单比较计数即可。
class Solution {
public int numOfSubarrays(int[] arr, int k, int threshold) {
if (arr.length<k)return 0;
int left = 0,right=k-1;
int sum=0;
for (int i = 0; i < k; i++) {
sum+=arr[i];
}
int ans =0;
if (sum*1.0/k>=threshold){
ans++;
}
while (right<arr.length-1){
sum-=arr[left++];
sum+=arr[++right];
if (sum*1.0/k>=threshold){
ans++;
}
}
return ans;
}
}
第三题:5313. 时钟指针的夹角
解题思路:给定两个数,代表时针和分钟,要求返回对应较小角的角度。(百度就完事了)
class Solution {
public double angleClock(int hour, int minutes) {
double gap = (30 * hour - 5.5 * minutes) % 360;
gap = Math.abs(gap);
if (gap>180){
gap=360-gap;
}
return gap;
}
}