![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构算法
农民小飞侠
如果放弃了,那还谈什么理想
展开
-
python 快速排序
以前又个面试官叫我写快速排序,我写了半个小时才写出来,中间还有bug,这里我复习一遍,用python实现一下,希望能对别人有所启发。代码class Solution(): def __init__(self): super().__init__() def partition(self,arr,low,high): key=arr[low] while(low<high): while(low<原创 2020-09-27 09:40:32 · 106 阅读 · 0 评论 -
python实现一元三次方程求根-二分法
今天我的一位学妹拿了一道编程题来问我,我当时没时间,然后她找了答案,叫我帮忙运行验证一下,我当时做了一些修改,觉得实现过程还不错,所以记录一下,分享出来学习学习。题目:有形如ax3+bx2+cx+d=0这样一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100到100之间),且根与根之差的绝对值大于等于1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。提示:记方程f(x。原创 2022-10-17 23:34:45 · 2471 阅读 · 0 评论 -
最长公共子串lcs动态规划实现
最长公共子串要求在原字符串中是连续的,而子序列只需要保持相对顺序一致,并不要求连续。下面我分享一下dp的方法,时间复杂度O(mn),空间复杂度O(mn)class Solution: def lcs(self,s1,s2): max_len=0 max_index=0 m=len(s1) n=len(s2) dp=[[0]*(n+1) for i in range(m+1)]原创 2021-02-21 12:17:45 · 108 阅读 · 0 评论 -
牛课网 python 最长公共子序列和最长公共子串的问题(不太懂)
最近在牛课网上实现了一下最长公共子序列的dp版本,发现ac不了,我怀疑它们把最长公共字串和最长公共子序列搞混了最长公共子序列的实现为:## longest common subsequence# @param s1 string字符串 the string# @param s2 string字符串 the string# @return string字符串#class Solution: def LCS(self , s1 , s2 ): # write cod原创 2021-01-24 12:54:01 · 203 阅读 · 0 评论 -
python 8皇后问题
今天想到了8皇后问题,所以特地来实现了一下,所谓的8皇后,就是在8*8的网格里面放皇后,然后任意两个皇后不能同行,同列或者同斜线。分析用一个一维数组表示8皇后,其中索引为行号,值为列号;实现一个conflict函数,判断一维数组里面的值是同列,或者同对角线剩下的就是按照行递归,每一次递归的时候找合适的列填值就行了。终止条件就是填到了n-1行打印输出就行了代码def conflict(q,x,y): for i in range(x): if(q[i]==y or a原创 2021-01-05 14:07:37 · 173 阅读 · 0 评论 -
python 求平方根
如果不调用库函数,可以用二分法或者牛顿法求平方根。牛顿法推导过程如下def solve(x,ratio): num=x while(True): num=(num+x/num)/2 if(abs(x-num*num)<=ratio): break return num二分法def binary_search(x,ratio): l=0 h=x while(l<=h):原创 2020-12-31 00:24:03 · 1234 阅读 · 0 评论 -
python 实现桶排序
桶排序我知道思想,但是一直没有自己实现过,我今天特地实现了一个版本,主要思想是分桶,设置每个桶的范围,然后把数映射到每个桶内,然后每个桶排序后进行合并就行了。代码class Solution(): def __init__(self): super().__init__() def bucketSort(self,nums,bucketSize=5): maxValue=max(nums) minValue=min(nums)原创 2020-12-30 00:15:47 · 174 阅读 · 0 评论 -
字符串与子字符串前缀匹配算法Z-algorithm(比较难理解)
问题对于一个字符串s,设它的长度为lenz[i]所表示的是s[i…len-1]与s[0…len-1]的最长公共前缀如何求出z[i]数组?分析这道题的解法是一个z算法,我也是第一次接触,O(n)的解法能够想到我觉得挺难的,需要通过已知的串s和z[1]…z[i-1]来求z[i],设想一个z数组,z[i]表示他的最长公共前缀即s[i]…s[i+z[i]].我们将其称之为i这个位置控制的范围,称为一个Z-box。我们定义l,r为右端点最靠右的Z-box的控制范围(即i和i+z[i])。进行分类讨论原创 2020-11-18 13:32:28 · 1103 阅读 · 0 评论 -
[leetcode] 72. Edit Distance动态规划
感想这是我在牛客网上看到的很经典的一个动态规划的题目,我当时也是不怎么懂,这里我把它记录下来,尽量写详细。problemGiven two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 ...原创 2018-05-01 00:16:05 · 243 阅读 · 1 评论 -
2018搜狐春招在线笔试编程题总结(技术类)
第一道题目是系统设计的题目,我记不清了,好像有规则一,规则二;第二道题目是求一个数据的排序的前K个值,这个太简单了,想都没想,就直接sort弄完了,我这里把我的代码贴出来,欢迎大家来纠错。我用的是C++#include<iostream>#include<map>#include<vector>using namespace std;int main(...原创 2018-04-14 17:49:04 · 628 阅读 · 0 评论 -
C++:用两个栈来实现一个队列,完成队列的Push和Pop操作
problem用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。analysisclass Solution{public: void push(int node) { stack1.push(node); } int pop() { if(stack2.empty()){ wh...原创 2018-03-01 20:32:04 · 1277 阅读 · 0 评论 -
请实现一个函数,将一个字符串中的空格替换成
problem请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。codeclass Solution {public: void replaceSpace(char *str,int length) { int blackNum=0; int old_length=0...原创 2018-03-01 15:58:08 · 459 阅读 · 0 评论 -
数据结构 - 如何判断两个无环单链表是否相交;如果相交,给出相交的第一个结点
感想百度机器学习与数据挖掘面试,居然被问到数据机构了,当时没有准备,猜了一个答案,好像沾到边了。不知道面试官认不认可呢,我反正说的是那个意思。百度了一下,找了一下答案。求解比较好的方法有两个:将其中一个链表首尾相连,检测另外一个链表是否存在环;如果存在,则两个链表相交,而检测出来的环入口即为相交的第一个结点。如果两个链表相交,那个两个链表从相交点到链表结束都是相同的转载 2017-09-12 20:57:32 · 583 阅读 · 0 评论