企業(yè)網(wǎng)站建設公司司如何做好網(wǎng)絡銷售技巧
1558. 得到目標數(shù)組的最少函數(shù)調(diào)用次數(shù)
- 原題鏈接:
- 完成情況:
- 解題思路:
- 參考代碼:
原題鏈接:
1558. 得到目標數(shù)組的最少函數(shù)調(diào)用次數(shù)
https://leetcode.cn/problems/minimum-numbers-of-function-calls-to-make-target-array/description/
完成情況:
解題思路:
public static void main(String[] args) {//給你一個與 nums 大小相同且初始值全為 0 的數(shù)組 arr//要么一個加1【+1】,要么全乘2【*2】//初始全零,返回的時候,輸出次數(shù)//然后題目會給你目標結(jié)果//采用結(jié)果倒推法,會更好一點。
}/***全程就兩件事需要你做,遇到奇數(shù)則-1,,,,最后一圈結(jié)束則全部數(shù)/2* 一直循環(huán),直到全部的數(shù)都變成0為止。** @param nums* @return*/
參考代碼:
package LeetCode中等題02;public class __1558得到目標數(shù)組的最少函數(shù)調(diào)用次數(shù) {/**** @param args*/public static void main(String[] args) {//給你一個與 nums 大小相同且初始值全為 0 的數(shù)組 arr//要么一個加1【+1】,要么全乘2【*2】//初始全零,返回的時候,輸出次數(shù)//然后題目會給你目標結(jié)果//采用結(jié)果倒推法,會更好一點。}/***全程就兩件事需要你做,遇到奇數(shù)則-1,,,,最后一圈結(jié)束則全部數(shù)/2* 一直循環(huán),直到全部的數(shù)都變成0為止。** @param nums* @return*/public int minOperations(int[] nums) {int res = 0,maxN = 0;for (int num : nums){maxN = Math.max(maxN,num);while (num != 0) {if ((num & 1) != 0){res++;}num >>= 1;}}//加法和乘法分離的計算if (maxN != 0){while (maxN != 0){res++;maxN >>= 1;}res--; //-1時,進行的右移為0,認為的右移二進制}return res;}
}