数据结构和算法分析
att0206
C/C++、Qt、ISP、图像处理(增强、降噪)、Opencv、ncnn、机器学习、深度学习、边缘计算、arm算法优化等领域,望能跟共同志向者一同学习交流!
展开
-
深度优先搜索DFS
题目:一个棋盘格9*10,按照象棋马走“日”的规则,从起点走到终点,且走过的路不能重新走,设计一个算法实现!分析: 本题是典型的深度优先搜索的题目,首先分析马在一个位置时所能走的下一个位置时的走法,共有8种。如下图所示马所在位置所能到达的地方: 移动规则为:int dx[] = {2,1,-1,-2,-2,-1,1,2};int dy[] = {1,2,2,1,-1,-2,-2,-1};每原创 2017-09-24 18:19:18 · 318 阅读 · 0 评论 -
LeetCode之Remove Duplicates from Sorted Array II
题目描述: Follow up for ”Remove Duplicates”: What if duplicates are allowed at most twice? For example, Given sorted array A = [1,1,1,2,2,3], Your function should return length = 5, and A is now [1,1,2...原创 2018-08-20 17:56:09 · 123 阅读 · 0 评论 -
《剑指Offer》之调整数组顺序使得基数在偶数前面
题目描述; 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。注:本系列例程均在牛客网在线编程编译通过,并且在VS2015中编译通过;思路分析: 主要采用的是两个vector容器来存放在遍历数组的时候分别将基数和偶数放到其中一个容器中;这样时间代价为O(n);代...原创 2018-08-20 20:55:59 · 171 阅读 · 0 评论 -
二叉树的前序/中序/后续遍历的几种实现方法
树的定义如下:struct TreeNode{ int value; TreeNode* Right; TreeNode* Left; TreeNode(int x):value(x),Right(NULL),Left(NULL){}};原创 2018-08-23 21:45:51 · 153 阅读 · 0 评论 -
《LeetCode》之Valid Parentheses
题目描述: Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid. The brackets must close in the correct order, “()” and “()[]” are all va...原创 2018-08-28 11:46:43 · 148 阅读 · 0 评论 -
再来谈谈递归
今天在知乎看到一句话,所谓的算法最终一切都归于——数学之美,显然目前我还没到这个水平,还仅仅是畅游在算法的海洋中发现一个个“新大陆”,未触及的知识还有很多;虽说学算法学的是它的思想,但就这个思想是最不好让人把握的,一旦一个题目把握了它的解题思路,立马醍醐灌顶,豁然开朗;就在之前的字节跳动笔试题中就有递归的身影,巧妙且精简,让人回味无穷; 今天就简单回味下递归的解题思路;先开,不断更新;...原创 2018-08-21 13:00:10 · 169 阅读 · 0 评论 -
《剑指Offer》之跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析:本题可以用普通的递归来解,但是会超时,所以可以用能过存储数据的DP来解决,状态转移方程为:注:本系列都在牛客网在线编程通过,并且在本地VS2015编译通过;DP[j] = DP[j-1]+DP[j-2]同时用一个容器来存储这些数据即可,时间复杂度...原创 2018-08-24 13:25:20 · 179 阅读 · 0 评论 -
LeetCode之Maximum Subarray
题目描述: Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [−2,1,−3,4,−1,2,1,−5,4], the contiguous subarray [4,−1,2,1...原创 2018-08-21 15:18:38 · 175 阅读 · 0 评论 -
再谈谈动态规划DP(dynamic programming)
多阶段决策过程(multistep decision process)是指这样一类特殊的活动过程,过程可以按时间顺序分解成若干个相互联系的阶段,在每一个阶段都需要做出决策,全部过程的决策是一个决策序列。动态规划(dynamic programming)算法是解决多阶段决策过程最优化问题的一种常用方法,难度比较大,技巧性也很强。利用动态规划算法,可以优雅而高效地解决很多贪婪算法或分治算法不能解决的问...原创 2018-08-21 18:59:50 · 284 阅读 · 0 评论 -
《剑指Offer》之从上往下打印二叉树
题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路: 这题类似于层次打印,只需要用到一个队列,依次输入顶点以及左结点和又结点依次进队的顺序即可;注: 本系列全部在牛客网上在线编程通过,并且在本地VS2015上编译通过;代码如下:#include<iostream>#include<vector>#include<q...原创 2018-08-24 18:47:44 · 232 阅读 · 0 评论 -
各种排序算法
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yushiyi6453/article/details/76407640 ...转载 2018-09-02 12:27:17 · 182 阅读 · 0 评论 -
LeetCode之Longest Consecutive Sequence
Descrition: Given an unsorted array of integers, find the length of the longest consecutive elements sequence. For example, Given [100, 4, 200, 1, 3, 2], The longest consecutive elements sequence is...原创 2018-08-16 18:54:06 · 153 阅读 · 0 评论 -
LeetCode之移除已排序数组中的相同元素
描述: Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must d...原创 2018-08-17 18:41:02 · 125 阅读 · 0 评论 -
《剑指Offer》之数值的整数次方
题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。注:本系列全部在牛客网上进行在线测试通过,并且在VS2015上编译通过;思路解析: 本题还是属于easy 类题,主要需要考虑几个特殊情况:base为0的情况exponent为0情况exponent小于0等三种情况。代码如下所示:#inc...原创 2018-08-19 16:52:27 · 179 阅读 · 0 评论 -
数据结构之队列的实现【C++】
昨天对链表进行了简单的实现,链表虽然结构简单,但能实现的东西很多,于是乎,今天又用单向链表实现了一个简单版本的队列,所谓队列即FIFO(Fist in Fist out)先进先出的形式(队列队列,跟日常生活中的ATM排队取钱的形式是一样的,在遵守规则的前提之下排在前面的肯定就会先出列取钱,在后进入队列的都会排在队尾,依次类推); 1、首先创建一个Queue.h的头文件#ifndef __QUEUE原创 2017-10-21 22:06:20 · 331 阅读 · 0 评论 -
数据结构之单向链表的实现【C++】
本科没有学习过数据结构,之前也只是泛泛的看看链表的原理,并没有实际编写,昨天就系统的将链表的各项功能给实现了下,其中包括:移除,插入,更改,清空,打印,链表反转等功能;其中,链表的反转这在《剑指offer》以及其他面试中经常会被问到的问题;同时,对链表的熟悉可以为后期的队列以及栈等的编写提供基础,所以还是很有必要从头将链表进行弄明白。首先建立List.h文件,为了和STL中的list进行区分,所以原创 2017-10-21 11:02:45 · 292 阅读 · 0 评论 -
vector的实现【C++】
平时都是直接使用C++标准库中的容器,今天就参照《数据结构与算法分析》一书简单的实现了下vector向量容器,本程序中没有添加异常以及错误的处理。后期会继续完善。#include<iostream>#include<List>using namespace std;template<typename Object>class Vector{public: explicit Vecto原创 2017-10-17 22:17:08 · 238 阅读 · 0 评论 -
《剑指Offer》之滑动窗口的最大值
题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组 {2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为 {4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3...原创 2018-08-18 15:58:31 · 131 阅读 · 0 评论 -
《剑指Offer》之反转链表并返回头指针
描述: 输入一个链表,反转这个链表,并输出反转后链表的头指针;注:本核心代码都是在牛客网在线编程中进行测试通过,并且在VS2015上进行编译通过;代码如下所示:#include<iostream>#include<vector>using namespace std;struct ListNode { int val; stru...原创 2018-08-18 21:31:19 · 396 阅读 · 0 评论 -
《剑指Offer》之链表中倒数第k个结点
题目描述: 输入一个链表,输出该链表中倒数第k个结点。思路分析: 由于是要找到倒数第k个结点,而链表又不可以直接索引,因此,引入栈存储各个链表的结点,利用栈的反序功能,然后只需要返回第k个结点就可以了; 本题中需注意:unsigned int 和int的转换k的值不能等于0或者大于链表的总长度链表为空有点小坑,注意的地方大体就是上面的几个地方,毕竟提交了几次每次都只是部分...原创 2018-08-22 13:34:37 · 142 阅读 · 0 评论 -
《剑指Offer》之两个栈实现一个队列的push()与top()方法
题目描述: 用两个栈来实现一个队列,完成push()和top()功能;注:本系列程序都是在牛客网上进行编写测试通过,并且在VS2015环境下进行测试通过;思路解读: 主要是将stack1作为主栈,将stack2作为辅栈,stack1作为push()压入队列的主要栈操作,如果是pop()弹出队列,则用stack2不断的接收stack1.top()栈顶的元素,压入栈中,这样直到把sta...原创 2018-08-19 14:33:53 · 756 阅读 · 0 评论 -
《剑指Offer》之旋转数组的最小数字
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。注:本系列都是在牛客网在线编程测试通过,并且在VS2015上编译通过;思路分析; 这题还是相对很简单...原创 2018-08-19 15:20:17 · 168 阅读 · 0 评论 -
《剑指Offer》之Fibonacci
题目描述;大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 注:本系列全部在牛客网在线编程测试通过,并且在VS2015编译通过;思路解析: 看到这题,是不是大家都觉得一个递归几行代码就搞定了class Solution {public: int Fibonacci(int n) { ...原创 2018-08-19 16:10:56 · 154 阅读 · 0 评论 -
《剑指Offer》之二进制中1的个数
题目描述;输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。注:本系列全部通过牛客网在线编译通过,并且在VS2015上也编译通过;#include<iostream>using namespace std;class Solution {public: int NumberOf1(int n) { int num = 0;...原创 2018-08-19 16:28:34 · 178 阅读 · 0 评论 -
排序算法
说明: 排序算法在面试中是很容易出现的,让你现场coding一个简单排序算法,亦或让你分析各个排序算法的时间复杂度等;所以能够清楚常用排序算法的原理以及写出一个bug free的代码是很有必要的。 常用排序算法的时间和空间复杂度如下图所示: ...原创 2018-09-02 16:25:18 · 164 阅读 · 0 评论