
编程算法笔记
赵大寳Note
公众号:赵大寳Note(ID:StateOfTheArt),跟我一起探索世界
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
递增有序单链表合并
1.实现将两个带头结点的链表L1和L2进行连接,连接后的链表仍然使用原来的存储空间;结果为链表L2连接到L1的末尾。思路:找到链表L1的尾节点,使其指针域指向下一个链表的头结点(同时将链表L2所占用的内存空间进行回收)。合并之前: 合并之后: #include "stdafx.h"#include <iostream>using namespace std;...原创 2018-03-30 11:31:45 · 1730 阅读 · 0 评论 -
【剑指Offer】24. 二叉搜索树的后序遍历
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:1、序列的的最后一个数字是根节点2、二叉搜索树左子树的节点都比根节点小,右子树的节点都比根节点大。C++递归与非递归实现代码:#include <iostream>#include <vector>#in...原创 2018-10-20 23:05:15 · 208 阅读 · 0 评论 -
相似字符串
今天遇到了一个算法题目:相似字符串。题目提出了一个相似字符串的定义:形如“aba”与“xyx”相似;“abc”与“xyz”相似,要求找出输入的两个字符串中相似字符串的个数。首先我感觉这个有点类似于正则表达式,但需要根据给定的规则匹配出所有的字符串,又有点像KMP算法的过程。 这里给出一个思路: 在“最长公共字符串”这个DP问题中,用了一个矩阵来保存字符比较的状态,但在这个问题中,“aba”...原创 2018-09-10 00:44:13 · 1438 阅读 · 0 评论 -
编程算法面试问题笔记
代码:数组中第k大的数代码:找出一个旋转数组中的最小值一个链表,奇数位升序,偶数位降序,将其转化成完全升序的链表代码:O(1)空间复杂度判断一个整数是不是回文数代码:给定一个dictionary,以及一个长字符串,判断字符串能不能拆成dict中单词的组合代码:数组中第k大的数代码:找出一个旋转数组中的最小值一个链表,奇数位升序,偶数位...原创 2018-09-09 16:06:22 · 213 阅读 · 0 评论 -
【LeetCode】6. ZigZag Conversion
这题我自己写出了一个时间复杂度O(n),但空间复杂度较高的解法,就是模拟Z字形填空二维矩阵,然后按行读取出不为’\0’的字符,所以空间复杂度较高。这类题解决之前需要注意特殊输入,检查代码完整性比如如果numRows为1和0的特殊情况。#include&lt;iostream&gt;#include&lt;string&gt;#include&lt;vector&gt;using na...原创 2018-06-05 23:13:38 · 382 阅读 · 0 评论 -
顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路比较直观的解法: 按照顺时针一圈一圈的打印,如何确定打印的圈数呢?...原创 2018-09-11 17:10:50 · 219 阅读 · 0 评论 -
中文数字转阿拉伯数字
这个题与LeetCode第13题罗马数字转换很相似 13. Roman to Integer 我开始想用C++处理,但是C++对于原创 2018-05-17 18:21:42 · 6801 阅读 · 1 评论 -
Hash哈希查找算法
今天面试中遇到一个查找问题,典型的属于哈希查找算法可以解决,我居然懵逼了很尴尬 ̄□ ̄||,之前在数据结构中学过Hash表,后来有没有复习,现在在这里再总结归纳一下吧。 没有复习之前提到Hash我一直以为是IPFS里面的Hash校验算法,算是理解比较片面吧。使用哈希表快速查找字符串 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构...原创 2018-04-11 19:14:30 · 5733 阅读 · 0 评论 -
【LeetCode】27. Remove Element
双指针,可简化//int removeElement(vector&lt;int&gt;&amp; nums, int val) { if (nums.empty()) return 0; int p, q; p = q = 0; for (int i = 0; i &lt; nums.size(); i++) ...原创 2018-04-02 17:37:06 · 134 阅读 · 0 评论 -
【LeetCode】746. Min Cost Climbing Stairs
题目描述:数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1: 输入: cost = [10, 15, 20] 输出: 15 示例 2:...原创 2018-04-02 17:34:14 · 170 阅读 · 0 评论 -
【LeetCode】70. Climbing Stairs【牛客网】变态跳台阶
今天在LeetCode做到一个动态规划的题,之前在牛客网做过一道“变态跳台阶”的题,猛一看还以为是一个意思,牛客网那边能AC,LeetCode这边却不能AC,很奇怪,其实题目有细微的差别, 这两题难道不是一个意思吗?1、跳台阶题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种方法? 与LeetCode Problem No.70 ...原创 2018-04-02 15:35:30 · 1048 阅读 · 0 评论 -
【LeetCode】203. Remove Linked List Elements
//LeetCode 203. 删除链表中的元素#include "stdafx.h"#include &lt;iostream&gt;using namespace std;typedef int ElemType;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next...原创 2018-04-02 08:03:19 · 173 阅读 · 0 评论 -
【剑指Offer】11. 数值的整数次方
1、浮点数的比较不能直接用“==”,精度问题 2、代码的鲁棒性,考虑非正常情况 3、0的0次方=1 4、unsigned int,计算机中数字都用补码表示 5、移位运算 6、递归算法#include &lt;iostream&gt;using namespace std;class Solution{public: bool g_InvalidInput = fals...原创 2018-04-08 20:05:50 · 178 阅读 · 0 评论 -
python2与python3的除法
【背景】有一道算法题,在直角坐标系的第一象限内,NxN的区域内有多少个能与原点直线相连又不经过其他整数点的点 我本来想根据数据推理总结出数学公式来,但是归纳了半天还没弄出来还浪费了时间,还不如直接编程解决。我的思路如下: NxN的区域内的整数点与原点相连构成直线斜率各不相同,只要算出有多少个不同的斜率就能得到有多少个不被挡住的点 斜率我准备直接通过点坐标(x,y)y/x得到,但是pyth...原创 2018-03-31 22:15:01 · 1402 阅读 · 2 评论 -
【剑指Offer】10. 二进制中1的个数
位移与“与运算” 正数的补码是自身,负数的补码是原码的高位不变,数值位取反加1(符号位不参与取反) 那么-7是负数,原码:1000 0111,反码:1111 1000,补码:1111 1001#include &lt;iostream&gt;#include &lt;vector&gt;using namespace std;class Solution{public: ...原创 2018-04-08 16:13:39 · 156 阅读 · 0 评论 -
Binary tree二叉树
二叉树定义、构建、先中后遍历、层次遍历、树深度#include "stdafx.h"#include <iostream>using namespace std;#define maxSize 100typedef struct BTNode{ char data; struct BTNode *lchild; struct BTNode *r...原创 2018-03-31 14:49:13 · 289 阅读 · 0 评论 -
栈的数据结构与基本操作
C语言:// C program for array implementation of stack#include "stdafx.h"#include <stdlib.h>#include <limits.h>// A structure to represent a stackstruct Stack{ int top; unsi...原创 2018-03-30 12:56:12 · 249 阅读 · 0 评论 -
【Leetcode】K sum problem
1. Two SumBruteForce首先我们可以想到一个暴力破解的方法,每两个数字之间求和看是不是目标值,时间复杂度为O(n2)O(n^2)O(n2)vector<int> twoSum_BruteForce(vector<int> &nums, int target){ vector<int> res; for (int i...原创 2019-06-08 15:42:05 · 345 阅读 · 0 评论