{ "type": "code_options", "author": "https://github.com/begeekmyfriend/leetcode", "source": "solution.md", "exercise_id": "1472af7b2fbd488290d393506127b757", "keywords": "数组,二分查找", "title": "搜索旋转排序数组 II", "desc": [ { "content": "\n

已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。

\n

在传递给函数之前,nums 在预先未知的某个下标 k0 <= k < nums.length)上进行了 旋转\n,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0\n开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为\n[4,5,6,6,7,0,1,2,4,4] 。\n

\n

给你 旋转后 的数组 nums 和一个整数 target ,请你编写一个函数来判断给定的目标值是否存在于数组中。如果\nnums 中存在这个目标值 target ,则返回 true ,否则返回 false 。\n

\n

 

\n

示例 1:

\n
输入:nums = [2,5,6,0,0,1,2], target = 0
输出:
true
\n

示例 2:

\n
输入:nums = [2,5,6,0,0,1,2], target = 3
输出:
false
\n

 

\n

提示:

\n\n

 

\n

进阶:

\n", "language": "markdown" } ], "answer": [ { "content": "", "language": "cpp" } ], "prepared": [ [ { "content": "", "language": "cpp" } ], [ { "content": "", "language": "cpp" } ], [ { "content": "", "language": "cpp" } ] ], "template": { "content": "#include \n#include \n#include \nstatic bool search(int *nums, int numsSize, int target)\n{\n\tint lo = 0;\n\tint hi = numsSize - 1;\n\twhile (lo <= hi)\n\t{\n\t\tint mid = lo + (hi - lo) / 2;\n\t\tif (nums[mid] == target)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\tif (nums[lo] == nums[mid] && nums[mid] == nums[hi])\n\t\t{\n\t\t\tlo++;\n\t\t\thi--;\n\t\t}\n\t\telse if (nums[lo] <= nums[mid])\n\t\t{\n\t\t\tif (nums[lo] <= target && target < nums[mid])\n\t\t\t{\n\t\t\t\thi = mid - 1;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlo = mid + 1;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (nums[mid] < target && target <= nums[hi])\n\t\t\t{\n\t\t\t\tlo = mid + 1;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\thi = mid - 1;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\nint main(int argc, char **argv)\n{\n\tint i;\n\tint target = atoi(argv[1]);\n\tint size = argc - 2;\n\tint *nums = malloc(size * sizeof(int));\n\tfor (i = 0; i < argc - 2; i++)\n\t{\n\t\tnums[i] = atoi(argv[i + 2]);\n\t}\n\tprintf(\"%d\\n\", search(nums, size, target));\n\treturn 0;\n}", "language": "cpp" }, "node_id": "dailycode-248163efec6747ce852e85ea2dbe3c15", "license": "csdn.net", "created_at": 1637894158, "topic_link": "https://bbs.csdn.net/topics/600469924" }