算法

1.基础
1.1欧几里得算法
计算两个非负整数p和q的最大公约数:若q是0,则最大公约数为p。否则,将p除以q得到余数r,p和q的最大公约数即为q和r的最大公约数。

public static int ojld(int p,int q){
  if(q==0) return p;
  int r=p % q;
  return ojld(q,r);
}

1.2二分查找
注意:数组必须有序,力扣704

public class BinarySearch {
  public static int rank(int[] arr,int target) {
    int left = 0;
    int right = arr.length - 1;
    while (left <= right) {
      int mid = left + (right - left) / 2;
      if (target < arr[mid]) right = mid - 1;
      else if (target > arr[mid]) left = mid + 1;
      else return mid;
    }
    return  -1;
  }
}

背包
背包是一种不支持从中删除元素的集合数据类型,它的作用就是帮助用例收集元素并迭代遍历所有收集到的元素(迭代的顺序不确定)
用例:简单地计算标准输入中的所有double值的平均值和样本标准差,在这些计算中,数的计算顺序和结果无关。

  public static void main(String[] args) {
    Bag<Double> nums=new Bag<Double>();
    while(!StdIn.isEmpty()){
      nums.add(StdIn.readDouble());
      int N= nums.size();
      
      double sum=0.0;
      for(double x:nums){
        sum+=x;
        double mean=sum/N;
        
        sum=0.0;
        for(double x:nums){
          sum+=(x-mean)**2;
          double std=Math.sqrt(sum/(N-1));
        }
      }
    }
  }
posted @ 2024-08-01 01:18  无悔的选择  阅读(13)  评论(0)    收藏  举报