【剑指offer】
一卒2018
拉拉
展开
-
704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 方法:二分查找 二分查找是一种基于比较目标值和数组中间元素的教科书式算法。 如果目标值等于中间元素,则找到目标值。 如果目标值较小,继续在左侧搜索。 如果目标值较大,则继续在右侧搜索。 算法: 初始化指针 left = 0, right = n - 1。 当 left <= right: 比较中间元素 nums[pivot]原创 2020-07-28 12:01:55 · 80 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 定义头指针 left ,尾指针 right . left一直往右移,直到它指向的值为偶数 righ一直往左移, 直到它指向的值为奇数 交换 nums[left] 和 nums[right] . 重复上述操作,直到 left == right . 示例: 输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。 方法一:首尾指针 /转载 2020-07-28 11:19:11 · 98 阅读 · 0 评论 -
【剑指offer】面试题:调整数组顺序使奇数位于偶数前面
题目1:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 考虑可扩展的解法,能秒杀 Offer 普通方法:先push_back()奇数,再push_back()偶数 class Solution { public: void reOrderArray(vector<int> &ar...原创 2019-12-13 13:45:50 · 117 阅读 · 0 评论 -
剑指offer_用两个栈实现队列C++
class Solution { public: void push(int node) { stack1.push(node); //实现入队 } //出队思想: int pop() { //队列出队的底层实现:先将元素依次从1栈弹出,再依次压入至2栈, int a; //再 每次调用pop()出队列,返回一个元素。 if(stack2.empty()){原创 2020-07-24 00:59:28 · 289 阅读 · 0 评论 -
剑指offer_重建二叉树C++
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 /** * Definition for binary tree 1 * struct TreeNode { 2 3 * int val; 4 5 6 *原创 2020-07-22 16:51:31 · 120 阅读 · 0 评论