import java.util.*;//兩個有序數組間相加和的Top k問題public class FindArrTopK{ //堆節點的定義 public static class HeapNode{ public int row; public int col; public int value; public HeapNode(int row,int col,int value){
//在兩個排序數組中找到第k小的數public class FindMinK{ //(1)尋找上中位元的演算法 public static int getUpMedia(int[]arr1,int s1,int e1,int[]arr2,int s2,int e2){ int mid1=0; int mid2=0; int offset=0; while(s1<e1){
import java.util.*;//在兩個長度相等的排序數組中找到上中位元public class FindShangMidNum{ //找到兩個數組的上中位元 public static int getShangMidNum(int[]arr1,int[]arr2) { if((arr1==null&&arr2==null)||(arr1.length==0&&arr2.length==0)){
import java.util.*;//設計一個沒有擴容負擔的堆結構public class DesignHeap{// binary tree node contains parent reference(包含指向父類二叉樹) public static class Node<K> { public K value; public Node<K> left; public Node<K> right;
import java.util.*;//快排的實現public class quikSort{ //(1)遞迴實現快速排序 public static void quickSort(int[]s,int l,int r){ if(l<r) { int i=l; int j=r; int pivot=s[l]; //取每個子數組的第一個數為基點 while(i<j) {
//(方法一、判定5的個數O(Nlog(5)N))給定一個非負整數N,返回N!結果的末尾為0的數量 public static int getZero(int n) { if(n<0) { return 0; } int res=0; int cur=0; for(int i=5;i<n+1;i+=5) { cur=i;
//從5隨機到7隨機及其擴充public class RandomInt{ public static int rand1To5() { return (int)(Math.random()*5)+1; } //產生1-7的隨機函數 public static int rand1To7() { //return rand1To5()+2; int num=0; do{
//KMP演算法(手寫大名鼎鼎的kmp)經典的KMP演算法時間複雜度為O(m+n)public class kmp{ //kmp演算法尋找是否匹配 public static int getIndexOf(String s,String m) { if(s==null||m==null||m.length()<1||s.length()<m.length()) { return -1; }
//之字形列印矩陣public class ZhiPrintMatrix{ //之字形列印矩陣 public static void PrintMatrixZigZag(int[][]matrix) { //定義兩個移動方向 int tr=0; int tc=0; int dr=0; int dc=0; int endr=matrix.length-1; int endc=matrix[0].length-1; boolean
//轉圈列印矩陣public class CirclePrintMatrix{ //(1)矩陣分圈處理 public static void CirclePrintMatrix01(int[][]matrix) { int tR=0; int tC=0; int dR=matrix.length-1; int dC=matrix[0].length-1; while(tR<=dR&&tC<=dC) { //