算法
yaoyao071500
这个作者很懒,什么都没留下…
展开
-
算法之动态规划
动态规划思想动态规划算法分为一下步骤:1.状态容器 2.初始化 3.状态转移方程 4.输出结果一. 给定一个非负整数 *numRows,*生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]//动态规划思想int** generate(int numRows, int* returnSize, int** retur原创 2022-03-13 11:20:00 · 168 阅读 · 0 评论 -
算法之链表
`链表简单算法题1.将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成。(附leetcode 21.)//方法一struct ListNode *mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ if(!l1) return l2; if(!l2) return l1; struct ListNode *head=(struct ListNode*原创 2022-03-11 15:05:11 · 1991 阅读 · 0 评论 -
贪心 算法
贪心算法1.删列造序给你由 n 个小写字母字符串组成的数组 strs,其中每个字符串长度相等。这些字符串可以每个一行,排成一个网格。例如,strs = ["abc", "bce", "cae"] 可以排列为:abcbcecae你需要找出并删除 不是按字典序升序排列的 列。在上面的例子(下标从 0 开始)中,列 0('a', 'b', 'c')和列 2('c', 'e', 'e')都是按升序排列的,而列 1('b', 'c', 'a')不是,所以要删除列 1 返回你需要删除的列数。思路与算法原创 2022-03-11 15:03:37 · 295 阅读 · 0 评论 -
有关双指针的简单算法题
有关双指针1. 移动零(附leetcode.283)给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]方法一:双指针思路:使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。注意到以下性质:1.左指针左边均为非零数;2.右指针左边直到左指针处均为零。因此每次交原创 2022-03-11 15:01:34 · 1986 阅读 · 0 评论 -
leetcode 62
leetcode 62动态规划思想题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?输入:m = 3, n = 7输出:28思路与算法:我们用 f(i, j)f(i,j) 表示从左上角走到 (i, j)(i,j) 的路径数量,其中 ii 和 jj 的范围分别是 [0, m)[0,m) 和 [0, n)[0,n)。原创 2022-03-11 14:55:48 · 92 阅读 · 0 评论