
算法
普通算法
Gamble6
Settle down
展开
-
算法—KMP算法
T:"aaaaccabbaacca"P:"aacca"第一步,先维护好最长公共前缀表。 a 0 (前后字符相等的个数) aa 1 aac 0 aacc 2 aacca 0最前面补个-1,最终得到 a a c c a -1 0 ...原创 2021-07-13 00:03:02 · 307 阅读 · 0 评论 -
算法—按个数输出字符/按数字输出中文读数
题目:给定一个仅由字母和数字组成的字符串,遍历该字符串,每遇到数字,则记录连续出现的数字,并按照该组数字的次数输出该组数字和前一组数字之间的字符串。示例:str = a2b3d4,输出aabbbddddstr = a10b3,输出aaaaaaaaaabbbstr = 2ab,不输出str = a2b,输出aaclass Solution: def printstr(self, arr): ...原创 2021-07-11 23:03:51 · 444 阅读 · 0 评论 -
算法—二分查找
描述请实现有重复数字的升序数组的二分查找给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1示例1输入:[1,2,4,4,5],4返回值:2 说明:从左到右,查找到第1个为4的,下标为2,返回2示例2输入:[1,1,1,1,1],1返回值:0解法: 在有序的基础上,使用双指针确定左右边界,二分查找。clas...原创 2021-07-05 10:23:24 · 70 阅读 · 0 评论 -
算法——找出数组中唯一重复的值
一、最简单的方法 :空间换取时间 时间复杂度O(n^2),空间复杂度O(n)class Solution: def FindDup(self, arr): if not arr: return wind = [] n = len(arr) for i in range(n): if not in wind: wind.append(a...原创 2021-06-25 16:45:17 · 687 阅读 · 0 评论 -
算法—回文结构判断相关
一、判断一个链表是否为回文结构输入:[1,2,2,1]返回值:true 说明:1->2->2->1解法:利用栈结构class Solution: def isPail(self , head ): # write code here p = head stack = [] while p: stack.append(p.val) ...原创 2021-06-23 11:15:50 · 144 阅读 · 0 评论 -
算法——根据日期输出是该年的第几天
!!!闰年规则:4年一闰,百年不闰,四百年再闰。 1、整百年:必须是400的倍数。(1900不是,2000是) 2、非整百年:必须是4的倍数。如:2004class Solution: def DayOfYear(self, n): dict_month = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31} year = n//...原创 2021-06-22 15:23:48 · 127 阅读 · 0 评论 -
算法——股票问题
股票问题一、买卖股票的最好时机(一次交易)假设你有一个数组,其中第\ ii个元素是股票在第\ ii天的价格。你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。输入:[1,4,2] 返回值:3输入:[2,4,1] 返回值:2class Solution: def maxProfit(self , prices ): # write code here if not ...原创 2021-06-22 13:48:15 · 1238 阅读 · 0 评论 -
算法——大数加法
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)示例1输入:"1","99"返回值:"100" 说明:1+99=100class Solution: def solve(self , s , t ): # write code here l1 = len(s) l2 = len(t) ma...原创 2021-06-22 10:42:34 · 90 阅读 · 0 评论 -
算法-旋转矩阵
描述有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。示例1输入:[[1,2,3],[4,5,6],[7,8,9]],3 复制返回值:[[7,4,1],[8,5,2],[9,6,3]]解法:按旋转后的遍历方法去组成新矩阵class Solution: def rotateMatrix(self, mat, n): # write code her原创 2021-06-21 17:44:10 · 201 阅读 · 0 评论 -
算法-LRU实现
LRU设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)若opt=2,接下来一个整数x,表示ge原创 2021-05-30 11:46:30 · 98 阅读 · 0 评论