找到陣列的中心下標
阿新 • • 發佈:2021-10-03
基礎演算法練習:找到陣列的中心下標
/** * @author JH_Y * @version 1.0 * <p> * 找到陣列的中心下標 */ public class FindTheCenterSubscriptOfArray { public static void main(String[] args) { /** * * 給定一個整數陣列nums,請編寫一個能夠返回陣列 “中心下標”的方法。 * * 中心下標是陣列的一個下標,其左側所有元素相加的和等於右側所有元素相加的和 * 如果陣列不存在中心下標,返回-1。如果陣列有多箇中心下標,應該返回最靠近左邊的那一個 * 注意:中心下標可能出現在陣列的兩端。 */ int[] arr = {1, 7, 3, 6, 5, 6}; System.out.println("陣列中心下標為: "+findCenterIndex(arr)); } private static int findCenterIndex(int[] arr) { //int sum = Arrays.stream(arr).sum(); // Arrays工具類獲取陣列總和方法 int sum = JhArr.getSum(arr); //自己的封裝方法獲取陣列總和,sum用於從右邊遞減 int total = 0;//total用於從左邊遞加 for (int i = 0; i < arr.length; i++) { // 當total為arr[0]就是1時,sum為28 // total為 8時,sum為27 // total為 11時,sum為20 // total為 17時,sum為17 ==>得出索引 total += arr[i]; if (total == sum) return i; sum -= arr[i]; } return -1; } }