算法
wzcwangxiaozhang
这个作者很懒,什么都没留下…
展开
-
leedcode:括号生成
4.9日:括号生成数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例:输入:n=3输出:[ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ]class Solution{ List<String> res =...原创 2020-04-09 10:55:24 · 150 阅读 · 0 评论 -
leedcode:旋转矩阵
4.7日:旋转矩阵给你一幅由N*N矩阵表示的图像,其中每个像素的大小为4字节。请你设计一个算法,将图像旋转90度。不占用额外内存空间能否做到?class Solution{ public void rotate(int[][] matrix){ int len = matrix.length; //先以对角线(左上-右下)为轴进行翻转 ...原创 2020-04-08 13:45:37 · 138 阅读 · 0 评论 -
leedcode:机器人的运动范围
4.8日:机器人的运动范围地上有一个m行n列的方格,从坐标[0,0]到坐标[m-1,n-1]。一个机器人从坐标[0, 0]的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机...原创 2020-04-08 13:44:33 · 161 阅读 · 0 评论 -
leedcode:编辑距离
4.6日:编辑距离(动态规划)给你两个单词word1和word2,请你计算出将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三个操作:插入一个字符删除一个字符替换一个字符状态定义:dp[i][j]表示word1的前i个字母转换成word2的前j个字母所使用的最少操作。状态转移:i指向word1,j指向word2若当前字母相同,则dp[i][j]...原创 2020-04-06 13:00:33 · 135 阅读 · 0 评论 -
leedcode:LFU缓存
4.5日:LFU缓存设计并实现最不经常使用(LFU)缓存的数据结构。它应该支持以下操作:get 和put。get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) - 如果键不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前,使最不经常使用的项目无效。在此问题中,当存在平局(即两个或更多个键具有相同使用频率)时,最近最...原创 2020-04-05 10:21:07 · 117 阅读 · 0 评论 -
leedcode:接雨水(单调栈)
4.4日:接雨水给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。找出最高点分别从两边往最高点遍历:如果下一个数比当前数小,说明可以接到水class Solution(object): def trap(self, height): """ :type height: List[int] ...原创 2020-04-04 15:46:24 · 159 阅读 · 0 评论 -
leedcode:字符串转换整数(atoi)
4.3日:字符串转换整数(atoi)请你来设计一个atoi函数,使其能够将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在...原创 2020-04-03 19:46:35 · 164 阅读 · 0 评论 -
leedcode:生命游戏
4.2日:生命游戏根据生命游戏,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个...原创 2020-04-02 10:38:46 · 166 阅读 · 0 评论 -
leedcode:有效括号的嵌套深度
4.1日:有效括号的嵌套深度有效括号字符串仅由 "(" 和 ")" 构成,并符合下述几个条件之一:空字符串连接,可以记作AB(A与 B连接),其中 A和 B都是有效括号字符串嵌套,可以记作 (A),其中A 是有效括号字符串类似地,我们可以定义任意有效括号字符串 s 的嵌套深度depth(S):s 为空时,depth("") = 0s为 A 与 B连接时,depth(A + B)...原创 2020-04-01 20:29:19 · 291 阅读 · 0 评论 -
leedcode:排序数组(各类排序算法总结)
3.31日:排序数组给定一个整数数组nums,将该数组升序排列。我感觉有必要总结一下了!1、直接插入排序(Insertion Sort)直接插入排序是一种简单直观的排序方法。思想:对于未排序的元素,在已排序的元素中从后向前扫描,找到合适的位置后插入。直接插入排序是稳定的。因为未排序的元素在向前扫描的过程中遇到相同的元素就不会继续向前扫描了,更不会插在它的前面。平均和最差情况T(n)...原创 2020-03-31 13:36:44 · 280 阅读 · 0 评论 -
leedcode:圆圈中最后剩下的数字(约瑟夫环问题)
3.30日:圆圈中最后剩下的数字(约瑟夫环问题)0,1,…,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。分析:给出递推公式f(N,M)=(f(N−1,M)+M)%N*f(N,M...原创 2020-03-30 11:09:29 · 223 阅读 · 0 评论 -
leedcode:地图分析
3.29日:地图分析你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是**『曼哈顿距离』**( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个...原创 2020-03-29 21:26:59 · 185 阅读 · 0 评论 -
leedcode:单词的压缩解码
3.28日:单词的压缩编码注意:若是图片失效了,并不是失效了,因为我用的阿里对象存储,不知道为什么有时候会打不开,但图片还是存在的,你可以右击图片下载下来看。给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2...原创 2020-03-28 22:28:42 · 248 阅读 · 0 评论 -
leedcode:卡牌分组
3.27日:卡牌分组给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字x,使我们可以将整幅牌按下述规则分成1组或者多组:每组都有x张牌组内所有的牌上都写着相同的整数仅当你可选的x>=2时返回true。思路:1、遍历一次,统计每个数值的个数,如果某个数值只有一个,直接返回false。2、可以看一下示例5,将[2,2,2,2]分为了两组,显然2是公约数。p...原创 2020-03-27 23:09:01 · 144 阅读 · 0 评论 -
leedcode:三维形体的表面积
3.25日:三维形体的表面积(刚开始没读懂)⭐在N*N的网格上,我们放置一些(1*1*1)的立方体。每个值v=grid[i][j]表示v个正方体放在对应的单元格(i,j)上,返回最终形体的表面积。示例:输入[[2]]——>输出:10 输入[[1,2],[3,4]]——>输出:34理解:一个二维表格,二维表格里的每一个单元格的数值,表示了这个单元格里在垂直方向累加堆放的单位...原创 2020-03-26 09:09:42 · 201 阅读 · 0 评论 -
leedcode:移除元素
3.24日:移除元素给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。class Solution { public int removeElement(int[] nums, int va...原创 2020-03-26 09:08:36 · 76 阅读 · 0 评论 -
leedcode:链表的中间结点
3.23日:链表的中间结点给定一个带有头节点head的非空单链表,返回链表的中间节点。如果有两个中间节点,则返回第二个中间节点。输入:[1,2,3,4,5]——>输出:3输入:[1,2,3,4,5,6]——>输出:4//使用快慢指针,快指针q每次走2步,慢指针p每次走1步,当q走到链表的末尾时,p正好在中间class Solution{ public ListNode...原创 2020-03-26 09:07:30 · 83 阅读 · 0 评论 -
leedcode:使数组唯一的最小增量
3.22日:使数组唯一的最小增量给定整数数组A,每次move操作都会选择任意的A[i],并将其递增1,返回使A中的每个值都是唯一的最少操作次数。输入:[3,2,1,2,1,7]——>输出:6class Solution: def minIncrementForUnique(self, A): A.sort() A.append(100000)...原创 2020-03-26 09:06:37 · 111 阅读 · 0 评论 -
leedcode:最小的k个数
3.20日:最小的k个数输入整数数组 arr,找出其中最小的 k个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。例如:输入:arr=[3,2,1],k=2——>输出:[1,2]或者[2,1]class Solution(object): def getLeastNumbers(self, arr, k): """ ...原创 2020-03-26 09:05:33 · 81 阅读 · 0 评论 -
leedcode:数组中重复的数字
3.19日:数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。输入:[2,3,1,0,2,5,3]——>输出:2或3#时间复杂度O(nlogn),空间复杂度O(1)class Solution(object): def fi...原创 2020-03-26 09:04:40 · 91 阅读 · 0 评论 -
遗传算法详解
遗传算法1.简要概述在几十亿年的演化过程中,自然界中的生物体已经 形成了一种优化自身结构的内在机制,它们能够不 断地从环境中学习,以适应不断变化的环境。对于大多数生物体,这个过程是通过自然选择和有性生殖来完成的。自然选择决定了群体中哪些个体 能够存活并繁殖,有性生殖保证了后代基因的混合 与重组。演化计算(Evolutionary Computation, EC)是在达尔文(Darwin...原创 2020-01-29 20:42:10 · 6298 阅读 · 0 评论