Scanner scanner = new Scanner(System.in); // int cnt = Integer.parseInt(scanner.nextLine()); // String s = scanner.nextLine(); String s = "1,-1,7,3"; String[] ss = s.split(","); int[] array = newint[ss.length]; for (int i = 0; i < ss.length; i ++) { array[i] = Integer.parseInt(ss[i]); } func(array); }
publicstaticvoidfunc(int[] array){ int maxDis = Integer.MIN_VALUE; int totalDis = 0; // 计算如果不去掉点的实际路程 for (int i = 1; i < array.length; i ++) { totalDis += Math.abs(array[i] - array[i - 1]); } // 获取一个点,假设有A, B, C三个点,||AB| + |BC| - |AC||,其结果为0 or 正数, // 而这个正数就是进过B点所要多走的路程 for (int i = 1; i + 1 < array.length; i ++) { maxDis = Math.max(maxDis, Math.abs(array[i] - array[i - 1]) + Math.abs(array[i + 1] - array[i]) - Math.abs(array[i + 1] - array[i - 1])); } System.out.println(totalDis - maxDis); }