讨论社区

154 题的一个解法 AC,但是找到了一个反例

代码如下:

```java

 public int findMin(int[] nums) {

        int start = 0;

        int end = nums.length - 1;

        while (start < end) {

            if (nums[start] < nums[end]) {

                return nums[start];

            }


            int mid = (start + end) >>> 1;

            if (nums[mid] > nums[end]) {

                start = mid + 1;

            } else if (nums[mid] < nums[end]) {

                end = mid;

            } else {

                int temp = mid;

                while (temp >= 0) {

                    if (nums[temp] == nums[end]) {

                        temp--;

                    } else if (nums[temp] < nums[end]) {

                        return nums[temp];

                    } else {

                        return nums[mid + 1];

                    }

                }


                start = mid + 1;


            }

        }

        return nums[start];

    }

```

上边的解法可以顺利通过目前所有的测试用例,但是下边的测试用例输出错误。

测试用例: [3,1,2,3,3,3,3]

输出结果:2

期望结果:1

0 人关注了该问题 关注

0

776854974m • 1周前

非常感谢您的反馈,此问题已转给相关技术团队后期会持续优化,给您带来的不便敬请谅解,感谢您对力扣的支持。

0 个讨论

您需要登录后才可回复
您需要登录后才可以回复