剑指 Offer 03. 数组中重复的数字

解题思路,使用STL中的set,逐个读入vector中的每一个元素,使用set进行对比,如果set中存在会返回1,这时直接返回该元素即可;如果set中没有可以insert这个元素到set,进行下一次遍历。

class Solution {
public:int findRepeatNumber(vector<int>& nums) {set<int> ret;for(auto i:nums){if(ret.count(i) == 1){//存在为1,不存在为0return i;}else{ret.insert(i);}}return 0;}
};

剑指 Offer 04. 二维数组中的查找

解题思路:首先观察二维数组每一行最后一位是本行最大的,每一列第一位是本列最小的。所以可以从右上角至左下角进行处理。如果target小于右上角的数那么可以省略本列,因为本列中右上角是最小的数,底下的数必然本它大,所以列数减少。同理

可证行的处理也是一样的。

class Solution {
public:bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {if (matrix.empty() || matrix[0].empty()) return false;int i = 0, j = matrix[0].size() - 1;while (i < matrix.size() && j >= 0) {if (matrix[i][j] == target) return true;if (matrix[i][j] > target) j -- ;else i ++ ;}return false;}
};

剑指 Offer 05. 替换空格

解体思路:语法模拟题

class Solution {
public:string replaceSpace(string s) {string ret;for(auto p: s){if(p==' ') ret+="%20";else ret+=p;}return ret;}
};

剑指 Offer 06. 从尾到头打印链表

解体思路:遍历整个链表,将链表中所有val加入到vector中,然后整体对vector进行翻转。

class Solution {
public:vector<int> reversePrint(ListNode* head) {vector<int> res;while (head) {res.push_back(head->val);head = head->next;}return vector<int>(res.rbegin(), res.rend());}
};

剑指 Offer 07. 重建二叉树

解体思路:

class Solution {
public:unordered_map<int,int> pos;TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {int n = preorder.size();for (int i = 0; i < n; i ++ )pos[inorder[i]] = i;return dfs(preorder, inorder, 0, n - 1, 0, n - 1);}TreeNode* dfs(vector<int>&pre, vector<int>&in, int pl, int pr, int il, int ir){if (pl > pr) return NULL;int k = pos[pre[pl]] - il;TreeNode* root = new TreeNode(pre[pl]);root->left = dfs(pre, in, pl + 1, pl + k, il, il + k - 1);root->right = dfs(pre, in, pl + k + 1, pr, il + k + 1, ir);return root;}
};

剑指 Offer 01-----20相关推荐

  1. 《牛客网 剑指Offer前20题》

    <剑指Offer> 牛客网 前20道题 前言知识 面试题1:二维数组中的查找 面试题2:二维数组中的查找 面试题3:从头到尾打印链表 面试题4:重建二叉树 ***** 面试题5:两个栈实现 ...

  2. 剑指Offer #01 二维数组中的查找(Java描述)

    题目来源:牛客网-剑指Offer专题 题目地址:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一 ...

  3. 剑指offer(20)包含min函数的栈

    import java.util.Stack;public class Solution {//创建俩个辅助栈,stack1用来存放压入的元素,stack2用来保存较小元素Stack<Integ ...

  4. 剑指offer——01二维数组中的查找.

    class Solution {public:bool Find(int target, vector<vector<int> > array) {int m =array.s ...

  5. 【剑指Offer】20包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 时间限制:1秒:空间限制:32768K:本题知识点:栈 解题思路 # -*- codi ...

  6. 剑指offer (01):赋值运算符函数 (C++ 实现)

    1 题目 如下为类型 CMystring 的声明,请为该类型添加赋值运算符函数. class CMyString { public:CMyString(char* pData = nullptr);C ...

  7. 剑指offer.01 数组中重复的数(0504刷题自用)

    代码 class Solution {public:int findRepeatNumber(vector<int>& nums) {unordered_map <int,i ...

  8. 剑指offer第二版答案详细版(带详细解题思路)

    1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...

  9. 《剑指 Offer》题目汇总

    文章目录 1. 数组 2. 链表 3. 栈和队列 4. 哈希表 5. 字符串 6. 树 7. 堆 8. 回溯和深度优先搜索 9. 递归和循环 10. 双指针 11. 动态规划 12. 贪心算法 13. ...

  10. 剑指Offer面试题解总结11-20

    目录 剑指Offer(11~20) 旋转数组中的最小数字 矩阵中的路径 剪绳子 剪绳子II 二进制中1的个数 数值的整数次方 打印从1到最大的n位数 删除链表的节点 正则表达式匹配 表示数值的字符串 ...

最新文章

  1. PHP导出pdf文件_dompdf
  2. fastjson反序列化漏洞_漏洞预警Fastjson再爆反序列化代码执行漏洞;星巴克被发现存在信息泄露风险...
  3. 主创仅2人,题材是大型3D战争,这款游戏竟然“超逼真”?
  4. ​可扩展的公有云媒体服务设计解析
  5. 字符串常量与字符串变量
  6. Hadoop随笔(一)
  7. 47 - 算法 - Leetcode -167-两数之和 - 输入有序数组
  8. 程序员开发软件的意义到底在哪?
  9. kafka java 生产消费程序demo示例
  10. 初学java andriod 软件安装与配置问题
  11. ZMQ == 服务端创建,接受请求的过程
  12. VueJS 组件参数名命名方式和前台显示
  13. 如何调试Python extension
  14. 面试 Notes|2021 年秋季 Android 弱鸡艰难求职记。。。
  15. 新编C语言习题与解析,新编C语言习题与解析
  16. bochs镜像java模拟器_bochs镜像下载
  17. SDR SDRAM控制器设计
  18. CSC联合培养加拿大工签攻略
  19. 短线王的盯盘宝怎么样_股票盯盘系统app怎么样
  20. 最新kali之nmap

热门文章

  1. jvm jinfo 参数_jinfo:JVM运行时配置的命令行浏览
  2. Java中的代理设计模式
  3. JMetro版本5发布
  4. 只需5分钟即可启动并运行分层架构:: Spring Boot第1部分
  5. 带有JUnit 5支持的Ant 1.10.3发布
  6. ug弹簧可变性装配_弹簧可配置魔术
  7. jmeter实现翻页功能_JMeter定制功能实现
  8. jackson使用_如何在Jackson中使用PropertyNamingStrategy
  9. Java – HashMap详细说明
  10. idea中使用osgi_OSGi中的权限