牛客刷题系列之进阶版(搜索旋转排序数组,链表内指定区间反转)
一:搜索旋转排序数组
1.题目
2.代码实现
复制代码
3.思路和注意事项
思路是模拟二分查找来实现的
普通的二分查找是 if(nums[mid] > target)right = mid-1;else if(nums[mid] <target)left = mid+1;elsereturn mid;
nums[mid] > target 时, right = mid-1; 所以我们可以用 nums[mid] = 10001;来模拟 这种情况。
当我们找到在特殊情况下的 right 要变成 mid-1 时,我们就可以用 nums[mid] = 10001;来模拟 这种情况。
具体的情况看代码注释(主要是看 mid 和 t 在哪一边)
二:链表内指定区间反转
1.题目
2.代码实现
复制代码
3.思路和注意事项
主要思路就是一次一次的反转
需要注意的是要设虚拟头节点,以防头节点的改变的情况
ps
想和博主一样刷优质面试和算法题嘛,快来刷题面试神器牛客吧,期待与你在牛客相见噢!
版权声明: 本文为 InfoQ 作者【雪芙花】的原创文章。
原文链接:【http://xie.infoq.cn/article/2982211818e0dd39b493e7831】。未经作者许可,禁止转载。
评论