LeetCode pivot++ vs pivot+1
Posted
技术标签:
【中文标题】LeetCode pivot++ vs pivot+1【英文标题】: 【发布时间】:2021-08-26 10:35:27 【问题描述】:我在 LeetCode 上做二进制搜索问题。当我使用 pivot++ 或 pivot-- 时,自动评分器会显示“超出时间限制”,但如果我使用 pivot+1 或 pivot-1,它会接受解决方案。有谁知道为什么会发生这种情况?
p.s 问题表明我的解决方案必须具有 O(log n) 时间复杂度。
此代码不被接受:
class Solution
public int search(int[] nums, int target)
int left = 0;
int right = nums.length - 1;
int pivot = 0;
while (left <= right)
pivot = left+(right-left)/2;
if (nums[pivot] == target) return pivot;
if (nums[pivot] > target) right = pivot--;
else left = pivot++;
return -1;
此代码被接受:
class Solution
public int search(int[] nums, int target)
int left = 0;
int right = nums.length - 1;
int pivot = 0;
while (left <= right)
pivot = left+(right-left)/2;
if (nums[pivot] == target) return pivot;
if (nums[pivot] > target) right = pivot-1;
else left = pivot+1;
return -1;
【问题讨论】:
两者都返回pivot
的值加1。但是pivot++
修改pivot
和pivot+1
将不会改变@ 987654327@。这是您的代码所做的重大改变。
【参考方案1】:
另外,pivot++会先返回pivot的值再递增,pivot+1会返回递增后的值,如果使用++pivot会先递增pivot的值,然后返回新的递增值
【讨论】:
【参考方案2】:int x = 5;
int y = x++; //assigns x to y and then increments x, so y = 5, x = 6;
int z = ++x; //increments x and then assigns its value to y, so y = 7, z = 7;
int e = z + 1; //adds 1 to z and assigns result to e, but doesn't change z, so e = 8, z = 7.
【讨论】:
以上是关于LeetCode pivot++ vs pivot+1的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 724. Find Pivot Index
[LeetCode] 724. Find Pivot Index_Easy tag: Dynamic Programming
⭐️ LeetCode解题系列 ⭐️ 1179. 重新格式化部门表(Oracle Pivot 行转列函数)