題目一:數字在排序陣列**現的次數。
統計乙個數字在排序陣列**現的次數。例如,輸入排序
陣列和數字3,由於3在這個數
組**現了4次,因此輸出4。
設計乙個改進的二分查詢法,
分別查詢陣列中第乙個該數字和最後乙個該數字,
找到之後;利用索引計算中間該數字的個數;
package helen.c;
public class arrayfind ;
if(testname != null)
system.out.printf("%s begins: ", testname);
int result = arrayfind(data, k);
if(result == expected)
system.out.printf("passed.\n");
else
system.out.printf("failed.\n");
}// 查詢的數字出現在陣列的中間
void test1();
test("test1", data, 3, 4);
}// 查詢的陣列出現在陣列的開頭
void test2();
test("test2", data, 3, 4);
}// 查詢的陣列出現在陣列的結尾
void test3();
test("test3", data, 3, 4);
}// 查詢的數字不存在
void test4();
test("test4", data, 2, 0);
}// 查詢的數字比第乙個數字還小,不存在
void test5();
test("test5", data, 0, 0);
}// 查詢的數字比最後乙個數字還大,不存在
void test6();
test("test6", data, 6, 0);
}// 陣列中的數字從頭到尾都是查詢的數字
void test7();
test("test7", data, 3, 4);
}// 陣列中的數字從頭到尾只有乙個重複的數字,不是查詢的數字
void test8();
test("test8", data, 4, 0);
}// 陣列中只有乙個數字,是查詢的數字
void test9();
test("test9", data, 3, 1);
}// 陣列中只有乙個數字,不是查詢的數字
void test10();
test("test10", data, 4, 0);
}// 魯棒性測試,陣列空指標
void test11()
public static void main( string args)
private static int arrayfind(int a,int target)
int firsttarget=getfirst(a,target,0,a.length-1);
// system.out.println(firsttarget);
int lasttarget=getlast(a,target,0,a.length-1);
return lasttarget-firsttarget+1;
}// 1,2,3,3,3,3,3,5,6,7,8
private static int getfirst(int a, int target, int start, int end)
//尋找第乙個3
if(a[mid]==target)else
}else if(a[mid]>target)else
}private static int getlast(int a, int target, int start, int end)
//尋找最後乙個3
if(a[mid]==target)else
}}
在排序陣列中查詢數字
統計乙個數字在排序陣列 現的次數。例如,輸入排序陣列和數字3,由於3在這個陣列 現了4次,因此輸出4。有序陣列,二分查詢 思路 用二分查詢分別找到待找數字的第乙個和最後乙個 class solution def getnumberofk self,data,k number 0 if data no...
在排序陣列中查詢數字
劍指offer第53題 題目 數字在排序陣列 現的次數 統計乙個數字在排序陣列 現的次數,例如 輸入排序書序和數字3,由於3在這個陣列 現了4次,因此輸出4 發現這個題用到了二分查詢的思想,因為陣列是排序的,所以我們可以查詢出第一次和最後一次出現k的位置,然後兩個位置差 1就是出現的次數了 貼 pu...
在排序陣列中查詢數字
在排序陣列中查詢數字 統計乙個數字在排序陣列 現的次數。示例 1 輸入 nums 5,7,7,8,8,10 target 8輸出 2 示例 2 輸入 nums 5,7,7,8,8,10 target 6輸出 0 我的思路 二分查詢到target,再分別向前向後找等於target的值 public i...