第 19 场双周赛 Posted on 2020-02-08 | In leetcode , Weekly-Contest | | Words count in article: 390 | Reading time ≈ 2 5311. 将数字变成 0 的操作次数123456789101112class Solution {public: int numberOfSteps (int num) { int count = 0; while(num){ if(num % 2 == 0) num /= 2; else num -= 1; count++; } return count; }}; 5312. 大小为 K 且平均值大于等于阈值的子数组数目123456789101112131415class Solution {public: int numOfSubarrays(vector<int>& arr, int k, int threshold) { for(int i=1; i<arr.size(); i++){ arr[i] += arr[i-1]; } int count = 0; for(int i=k; i<arr.size(); i++){ if((arr[i]-arr[i-k])/k >= threshold) count++; } if(arr[k-1]/k >= threshold) count++; return count; }}; 5313. 时钟指针的夹角12345678910class Solution {public: double angleClock(int hour, int minutes) { double minu = (double)minutes; double hou = (hour%12)*5.0 + minu/60*5.0; double diff = abs(minu-hou); diff = min(diff, abs(60-diff)); return diff/60*360; }}; 5314. 跳跃游戏 IV1234567891011121314151617181920212223242526272829303132333435363738394041424344454647class Solution {public: int minJumps(vector<int>& arr) { int ans = 0, c = 0, lop = 0; vector<int> v; map<int, vector<int>> m; m.clear(); for (int i = 0; i < arr.size(); ++ i){ if (i && i != 1 && arr[i] == arr[i - 1]) continue; else{ v.push_back(arr[i]); m[arr[i]].push_back(c); ++ c; } } queue<int> Q; vector<bool> vis (v.size()+1, false); Q.push(0); vis[0] = true; while(!Q.empty()){ lop = Q.size(); for(int j = 0; j < lop; ++ j){ int tmp = Q.front(); Q.pop(); if(tmp == v.size() - 1) return ans; if(tmp > 0 && !vis[tmp - 1]){ Q.push(tmp - 1); vis[tmp - 1] = true; } if(tmp < v.size() - 1 && !vis[tmp + 1]){ Q.push(tmp + 1); vis[tmp + 1] = true; } for(int i = 0; i < m[v[tmp]].size(); ++ i){ if(!vis[m[v[tmp]][i]]) { Q.push(m[v[tmp]][i]); vis[m[v[tmp]][i]] = true; } } } ++ ans; } return ans; }}; Donate? comment? Donate WeChat Pay Alipay