每日知识点-桶排序
桶排序的简单实现
思路:创建一个数组,用来记录每个数值的个数,数组的下标表示值,数组的值代表该下标的值出现的次数。空间复杂度为O(M+N),可以用于知道值的范围且范围较小的计算。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
int [] arr = {0,0,0,0,0,0,0,0,0,0,0};
Scanner sc = new Scanner(System.in);
for(int i=0;i<=10;i++) {
int t = sc.nextInt();
arr[t]++;
}
for(int i=0;i<=10;i++) {
for(int j=0;j<arr[i];j++) {
System.out.println(i);
}
}
}
}
每日一题
思路:评论区大佬思路。每次调用myPow先判断是否为0,1,-1。这是递归结束的条件。最后三行代码是将数值编程更小数值的乘积。例如:如果数值n是奇数,则分成两个n/2和一个1,意思是x的n/2次幂乘x的n/2次幂乘x的1次幂。
class Solution {
public double myPow(double x, int n) {
if(n == 0)return 1;
if(n == 1)return x;
if(n == -1)return 1/x;
double half = myPow(x,n/2);
double mod = myPow(x,n%2);
return half*half*mod;
}
}