题解 | #游游的除2操作#
游游的除2操作
https://www.nowcoder.com/practice/b797f46aa75145a0bbe112099f7cbd18
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n=in.nextInt(); int[] list=new int[n]; for(int i=0;i<n;i++){ list[i]=in.nextInt(); } int step=0,flag=1,min=list[0],index1=0; while(flag==1){ flag=0; for(int i=0;i<n;i++){ if(list[i]>min){ list[i]=list[i]/2; step++; flag=1; } if(list[i]<min){ min=list[i]; list[index1]=list[index1]/2; step++; index1=i; flag=1; } } } System.out.print(step); } }
思路:一次循环,比较得出数组最小值min。比min大的数都除2;比min小的,更新min,将原来的min对应数字除2。