第三题,将每个元素都换成一次x,然后求区间和最大值就行了啊。 public int maxSubArray(int[] nums, int x) { int maxSum = nums[0]; // 初始化最大和为数组第一个元素 for (int i = 0; i < nums.length; i++) { int originalNum = nums[i]; // 保存原来的值 nums[i] = x; // 将元素i替换为x int currentSum = nums[0]; // 初始化当前连续子数组的和为数组第一个元素 for (int j = 1; j < nums.length; j++) { currentSum = Math.max(currentSum + nums[j], nums[j]); // 更新当前连续子数组的和 maxSum = Math.max(maxSum, currentSum); // 更新最大和 } nums[i] = originalNum; // 恢复原来的值 } return maxSum; }
点赞 6

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务