LeetCode-Algorithms-[Easy]1243. 数组变换

1243. 数组变换

	public List<Integer> transformArray(int[] arr) {
		boolean isChange = false;
		int n = arr.length;
		int[] temp = new int[n];
		initialTemp(temp, arr, n);
		while (true) {
			isChange = false;
			for (int i = 1; i < n - 1; ++i) {
				if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) {
					isChange = true;
					temp[i] = arr[i] - 1;
				} else if (arr[i] < arr[i - 1] && arr[i] < arr[i + 1]) {
					isChange = true;
					temp[i] = arr[i] + 1;
				} else {
					temp[i] = arr[i];
				}
			}
			if (!isChange) {
				break;
			} else {
				System.arraycopy(temp, 0, arr, 0, n);
			}
		}
		List<Integer> res = intArrToList(arr);
		return res;
	}

	private void initialTemp(int[] temp, int[] arr, int n) {
		temp[0] = arr[0];
		temp[n - 1] = arr[n - 1];
	}

	public List<Integer> intArrToList(int data[]) {
		IntStream is = Arrays.stream(data);
		Stream<Integer> s = is.boxed();
		List<Integer> res = s.collect(Collectors.toList());
		return res;
	}
发布了272 篇原创文章 · 获赞 7 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/m0_37302219/article/details/105482369