欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
    }
}