![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 52
sty945
这个作者很懒,什么都没留下…
展开
-
一道看似简单实际并不简单的平面几何题目
题目题目如上,咋一看觉得很简单,实际上并不好算解析链接原创 2022-05-14 10:42:43 · 262 阅读 · 0 评论 -
利用牛顿法求平方根-Go语言实现
牛顿法解释百度的解释如下:通俗的解释就是:多数方程不存在求根公式,牛顿提出了一种用迭代来求方程近似根的方法。思路就是不断取切线,用线性方程的根逼近非线性方程f(x)=0f(x)=0f(x)=0的根x∗x^*x∗随着k的增大xkx_{k}xk会不断逼近x∗x^*x∗牛顿法求平方根假如求a的平方根,那么也就是求解:f(x)=x2−a=0(a>0)f(x)=x^2-a=0(a>0)f(x)=x2−a=0(a>0)的正根利用牛顿迭代公式:f′(x)=2∗x{f'}(x)=2*原创 2021-10-07 22:09:01 · 535 阅读 · 0 评论 -
翻转二叉树 c语言实现 递归 栈 队列
前言题目比较好理解,就是翻转二叉树代码c语言实现#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 105struct TreeNode{ int val; TreeNode* left; TreeNo...原创 2018-09-04 13:54:24 · 6887 阅读 · 0 评论 -
字符串全排列的问题 python和c语言实现
前言这是一个的经典的问题 设计一个算法,输出一个字符串字符的全排列。 比如,String = “abc” 输出是”abc”,”bac”,”cab”,”bca”,”cba”,”acb”解法从集合依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理; 比如:首先我要打印abc的全排列,就是第一步把a 和bc交换(得到bac,cab),这需要一个for循...原创 2018-09-01 21:18:27 · 6378 阅读 · 0 评论 -
顺时针打印矩阵 python
前言题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.思路1.我们依次打印每一行 2.打印完了之后,我们需要删除第一行 3.然后我们需要把整个矩阵逆时针旋转一下,让...原创 2018-09-04 16:03:38 · 5601 阅读 · 0 评论 -
判断入栈顺序和出栈顺序是否合理 python实现
前言输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路1.我们申请一个的新的列表stack,依次将入栈序列中的值加入 2.每次...原创 2018-09-04 20:52:23 · 8049 阅读 · 0 评论 -
判断两个树是否相等和判断tree1是否包含tree2 python实现
判断两个树是否相等def equal(node_a, node_b): """ 判断两个树是否相等 :param node_a: :param node_b: :return: """ if not node_a and not node_b: return True elif not node_a and ...原创 2018-09-02 21:46:18 · 5854 阅读 · 0 评论 -
二叉树中和为某一值的路径
前言输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)python 非递归做法利用后序遍历的非递归思想class Solution: # 返回二维列表,内部每个列表表示找到的路径 def FindPath(sel...原创 2018-09-08 14:28:32 · 5341 阅读 · 0 评论 -
计算最长公共子序列
前言什么是最长公共子序列呢?好比一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则S 称为已知序列的最长公共子序列。如何解决通用的解法用动态规划,如何使用动态规划解题,晚上已经有很多不同人的答案了,推荐几个: 程序员编程艺术第十一章:最长公共子序列(LCS)问题 算法导论—–最长公共子序列LCS(动态规划)我的代码c语言#in...原创 2018-09-03 20:42:27 · 5482 阅读 · 0 评论 -
判断某数组是不是二叉树的后序遍历序列 python递归与非递归解法
python 递归class Solution: def VerifySquenceOfBST(self, sequence): # write code here if len(sequence) <= 0 or sequence == None: return False length = len(s...原创 2018-09-07 15:19:40 · 5635 阅读 · 0 评论 -
判断某数组是不是二叉树的前序遍历序列 python递归
codeclass Solution: def VerifySquenceOfBST(self, sequence): # write code here if len(sequence) <= 0 or sequence == None: return False length = len(sequence...原创 2018-09-07 15:33:03 · 5723 阅读 · 0 评论 -
二叉树的前序、中序、后序非递归遍历 python实现
前言python中二叉树的定义:class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None如何使用python建立一个二叉树前序class Solution: def preorderTr...原创 2018-09-14 10:00:41 · 5677 阅读 · 0 评论 -
8皇后问题的解法
传统办法-回溯法#include<iostream>#include<math.h>using namespace std;int n=8;int total=0;int *c=new int(n);bool is_ok(int row){ for(int j=0;j!=row;j++){ if(c[row]==c[j] || ro...原创 2018-10-17 11:06:43 · 5412 阅读 · 0 评论 -
数据结构与算法之美day 6: 如何实现LRU缓存淘汰算法?
文章目录单链表的相关操作 c语言实现单链表的相关操作 c语言实现其中有两个重要的算法需要注意判断链表是否有环翻转链表#include <stdio.h>struct single_list { struct single_list *next; int val;};struct single_list_head{ struct singl...原创 2019-01-08 11:41:42 · 5356 阅读 · 0 评论 -
TopCoder 2019线下比赛
文章目录warmup解法代码1 描述解答2 描述解答3 描述4 描述warmup解法代码NB解法——出自楼天城#ifdef _MSC_VER#define _CRT_SECURE_NO_WARNINGS#endif #include <bits/stdc++.h> using namespace std; typedef long long int64;ty...原创 2019-06-16 15:22:22 · 1218 阅读 · 0 评论 -
由动态规划计算编辑距离引发的思考
简单介绍编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the-art-of-programming-by-july/content/05.02.html https://www.dreamxu.com/books/dsa/dp/edit-distance...原创 2018-08-24 21:21:23 · 5355 阅读 · 0 评论 -
使用python建立简单的树机构
代码import sysclass TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: def preorderTraversal(self, root): &amp;quot;...原创 2018-08-21 17:54:49 · 5843 阅读 · 0 评论 -
求字符串全排列 python实现
算法思想具体代码参考算法思想输入一个字符串,打印这个字符串中字符的全排列。 eg: 输入:abc 输出:abc acb bac bca cab cba 思路:将求字符串的全排列分解为两步: 第一步是确定第一个位置的字符,就是第一个位置与后边的所有字符进行交换。 第二步,就是对除了第一个位置的后边所有位置的字符进行相同处理;直至剩下一个字符,打印; 具体的算法流...原创 2018-04-07 10:53:04 · 15646 阅读 · 4 评论 -
滑动窗口法详解
算法目的前言一个经典的问题代码如下总结参考资料算法目的该算法展示了如何将嵌套for循环在少数问题中转换为单个for循环,从而减少了时间的复杂性。前言一个经典的问题给一组大小为n的整数数组,计算长度为k的子数组的最大值 我们希望的结果如下Input : arr[] = {100, 200, 300, 400} k...原创 2018-04-23 09:11:52 · 47463 阅读 · 1 评论 -
Aho-Corasick 多模式匹配算法(AC自动机) 的算法详解及具体实现
多模式匹配 多模式匹配就是有多个模式串P1,P2,P3…,Pm,求出所有这些模式串在连续文本T1….n中的所有可能出现的位置。 例如:求出模式集合{“nihao”,”hao”,”hs”,”hsr”}在给定文本”sdmfhsgnshejfgnihaofhsrnihao”中所有可能出现的位置。AC 自动机算法在计算机科学中,Aho–Corasick算法是由Alfred V. Aho...原创 2018-05-08 10:13:16 · 7136 阅读 · 0 评论 -
2018 Google kickstart Problem A. Planet Distance
题目描述Small dataset3 ≤ N ≤ 30.Large dataset3 ≤ N ≤ 1000.input251 22 33 42 45 331 23 21 3Output Case #1: 1 0 0 0 1Case #2: 0 0 0In Sample Case #1, the cycle consists of planets...原创 2018-05-27 16:54:32 · 6174 阅读 · 0 评论 -
寻找一个字符串的重复子串 后缀数组
什么是后缀数组令字符串 S=S[1]S[2]...S[n]S=S[1]S[2]...S[n]{\displaystyle S=S[1]S[2]...S[n]} , S[i,j]S[i,j]{\displaystyle S[i,j]} 表示SS {\displaystyle S} 的子字符串,下标从ii {\displaystyle i} 到 jj{\displaystyle j} 。SS{...原创 2018-06-21 22:53:18 · 5885 阅读 · 0 评论 -
python 实现桶排序
前言桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间( Θ ( n ) {\displaystyle \Theta (n)} {\displaystyle \Theta...原创 2018-08-09 09:35:36 · 10216 阅读 · 0 评论 -
python实现二叉树的重建1 之由前序遍历和中序遍历重建
前言此题是关于树的面试题目的常见题型,题目的含义很清晰,这个就不用多说了解法关于这道题的解法有很多不同的样式,通用的解法是这样的: 假如现在我们有如下两个遍历的情况preorder: [1, 2, 4, 5, 3, 6]inorder: [4, 2, 5, 1, 6, 3]那么我们建树的办法通常是1.用先序遍历的第一个元素也就是1,作为root2.然后在ino...原创 2018-08-26 14:54:35 · 6024 阅读 · 2 评论 -
python实现二叉树的重建2 之由中序遍历和后序遍历重建
前言通过上一节对python实现二叉树的重建1 之由前序遍历和中序遍历重建,我相信我们再来做这个问题就不难了,完全可以照猫画虎的来实现,具体的原理几乎是一样的,直接上代码了code# 通用解法 def buildTree(self, inorder, postorder): """ :type inorder: List[int] :...原创 2018-08-26 15:27:51 · 5819 阅读 · 0 评论 -
关于某日访问次数最多的IP的topK问题的三种解法
题目描述在july大神的博客中,看到这样两道题:1. 海量日志数据,提取出某日访问百度次数最多的那个IP。2. 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。现在我将两题结合一下:假如有1千万+的...原创 2018-08-19 20:32:01 · 7525 阅读 · 1 评论 -
python 通过队列实现栈
前言原理比较简单,不再赘述codeimport collectionsclass MyStack: def __init__(self): """ Initialize your data structure here. """ self.queue = collections.deque() d...原创 2018-08-26 17:52:24 · 5413 阅读 · 0 评论 -
快速排序的递归和非递归实现 c语言版本
#include &amp;amp;lt;iostream&amp;amp;gt;void quick_sort(int s[], int l, int r){ if (l &amp;amp;lt; r) { int i = l, j = r, pivot = s[l]; while (i &amp;amp;lt; j) { whil原创 2018-08-30 17:48:43 · 10671 阅读 · 2 评论 -
55道常见的计算机面试题
此图来源: http://www.chinahadoop.cn/course/1160原创 2018-08-30 20:49:29 · 11899 阅读 · 0 评论 -
矩阵快速幂的问题
前言这个问题,本科ACM时期做过专门的总结,但是,由于后来也没有使用过相关的知识,就忘得差不多了最近回顾了一下之前的博客链接快速幂取模算法 快速幂算法模板 矩阵乘法快速幂模板 相关的地址矩阵快速幂的写法 while(N) { if(N&1) res=res*A; n>>=...原创 2018-08-31 00:20:38 · 5338 阅读 · 0 评论 -
使用python建立简单的单链表
import sysclass ListNode: def __init__(self, x): self.val = x self.next = None# 将列表转换成链表def list_to_listnode(numbers): dummy_root = ListNode(0) ptr = dummy_root ...原创 2018-07-21 11:57:34 · 5827 阅读 · 0 评论 -
关于二叉树的层次遍历的花样(c++实现)
花样变形1::二叉树层次遍历但是分层打印分析:与普通打印多了一个分层打印,其实只要在在层次遍历中多设置一个标记变量即可 代码如下://二叉树的层次遍历void levelTravel(BTNode *bt){ if (bt == NULL) { return; } queue<BTNode *> nodeQueue; nodeQueue.原创 2017-12-06 19:59:46 · 4993 阅读 · 0 评论