
剑指offer
CV伍六七
一只无厘头的CV算法工程师,一个不服输的斜杠青年,也是CV界的段子手。
小镇青年,双非出身,考研985,在卷到离谱的CV圈里成功上岸,目前正在万米裸泳中!冲冲冲!!!。
一边记录成长,一边分享收获。
展开
-
七大排序总结
大四狗刚考完研,刷牛客网的时候发现自己七大排序都不能很流畅地写出来,实在惭愧,而排序算法是非常基础和重要的算法,所以今天特意总结了下排序算法。 为了编码方便,我所有的排序都是递增排序 (算法解释我就不写了,好多博主写了解释,感觉学会以后写算法解释好费时间。。。。每个排序我都会贴几个解释得比较好的博客链接,文末我会贴上我对这个七个排序所有的源代码,代码都写得比较精简,不过要是有觉得我写得不好的可原创 2018-01-10 22:29:06 · 267 阅读 · 2 评论 -
有父节点二叉树找中序遍历后继节点
数据结构精妙至极! 求后继节点: 1)为NULL,返回NULL; 2)节点有右子树,则返回右子树的最左节点; 3)没有右子树则向父节点求 **这时候有两个情况,如果该节点是父节点的左节点,则返回父节点。 否则判断该父节点,若该父节点是其父节点的左节点则返回该父节点,否则再判断它的父节点……这样一直到根节点,如果还没有得到结果,则返回为NULL**/*struct Tree原创 2018-01-20 22:42:11 · 546 阅读 · 1 评论 -
在矩阵中找到字符串——牛客网,剑指offer(矩阵中的路径)
题目描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为字符串的第一个字符b原创 2018-01-29 13:50:23 · 646 阅读 · 0 评论 -
求二叉排序树的第k个节点
记录下自己愚蠢的一天 首先题目一看都能想到要用中序遍历打方法int index=0;TreeNode* KthNode(TreeNode* root, int k){ if(root != NULL) { //中序遍历寻找第k个 KthNode(root->left,k); index++; if(index == k)原创 2018-01-26 16:49:35 · 447 阅读 · 0 评论 -
动态规划:连续子数组的最大和
这个题目写了不下三遍了,次次写还次次想不起来,想起来也还写好几遍才能写对,求一串数组的最大最大子序列和,用动态规划的方法,简直不要太高效。 比如下面这个数组{1,-2,3,10,-4,7,2,-5},最大连续子数组是{3,10,-4,7,2}和为18,不过这个求解过程我们不需要知道最大连续子数组的范围,只要知道值是18就可以。 动态规划的思想就是找到子结构的关系!我们可以这么切入这原创 2018-01-09 23:31:53 · 1611 阅读 · 1 评论 -
约瑟夫环问题
数组模拟队列:class Solution {public: int LastRemaining_Solution(int n, int m) { if(m1||n1)return -1; vectorint> vect(n,1); int i=-1,step=0, count=n; while(count原创 2018-01-18 10:04:05 · 211 阅读 · 0 评论 -
打印1到最大的n位数
方法一:最简单的思路当然是穷举法,直接上代码void simple_mothod(int n){ if (n 0)return; int sum = 1; for (int i = 0; i < n; i++) sum *= 10; for (int i = 1; i sum; i++) cout << i<<endl;}原创 2018-01-08 22:45:41 · 207 阅读 · 0 评论 -
位运算实现整数加减乘除(计算机组成原理内容)
位运算的题目很多,这个就厉害了,转载博客以学习编程之法。 听同学百度二面中,不准用四则运算操作符来实现四则运算。一想就想到了计算机组成原理上学过的。位运算的思想可以应用到很多地方,这里简单的总结一下用位运算来实现整数的四则运算。 大佬带你看位运算怎么实现四则运算! 加法运算: int AddWithoutArithmetic(int num1,int num2) { if(nu转载 2018-01-16 21:32:25 · 1543 阅读 · 0 评论 -
机器人的运动范围——剑指offer大结局。。
题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子? 本质就是一个dfs问题 直接上代码原创 2018-01-31 15:39:47 · 348 阅读 · 0 评论 -
整数中1出现的次数
题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。第一次做粗略地看了下解答,感觉很烦就跳过了,现在又回头去看,终于搞懂了,数学好真的很重要!!!! 整数中1原创 2018-01-15 15:39:54 · 179 阅读 · 0 评论 -
之字型打印二叉树(当年PAT跪了的题目,从大同见小异)
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 题目咋一看,很简单,可是实现起来还是有不少要注意的细节,最关键的是奇数层和偶数层要进行区分。我的方法就是每一次都是直接压入队列的方法,咋一听和我们层序遍历一模一样,对的,确实是一模一样,不同的是出队的时候把所有节点压入到一个数组中,当则一层是偶数层时翻原创 2018-01-14 22:30:24 · 253 阅读 · 0 评论 -
删除链表的重复节点
1-2-2-3-4-4-4-5要变成1-3-5 没有头节点 方法一:非递归ListNode* deleteDuplication(ListNode* pHead) { if(pHead==NULL||pHead->next==NULL) return pHead; ListNode *pre=NULL;原创 2018-01-22 11:59:42 · 244 阅读 · 0 评论 -
求有环链表(循环链表的第一个公共节点)
再次遇到,再次GG,虽然方法还记得,但是却证明不出来!!可能这就是智商压制吧。。。。天赋不够,努力来凑。。。。这个问题其实是分为两部分的 (1)判断一个链表是不是有循环链存在。 我们可以设置两个指针fast,flow.fast是每次向下移动两个节点,low是每次向下移动一个节点。如果有循环链表他们必然会相遇。这个很好证明了。 首先如果如果有循环链表的话,这个两个指针都会进入循环链,在循环原创 2018-01-11 23:35:48 · 1400 阅读 · 1 评论 -
大数相乘的问题——大数阶乘(整数)
使用数组进行模拟,记录进位,最后得到的进位再压入到数组内。#include<iostream>#include<vector>using namespace std;int main() { vector<int>ans; int x; while(cin>>x) { ans.clear();...原创 2018-02-11 20:38:17 · 242 阅读 · 0 评论