算法训练营
编程之心
这个作者很懒,什么都没留下…
展开
-
每天手撕一道算法-53. 最大子序和
53. 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 解析: [-2,1,-3,4,-1,2,1,-5,4] max = -2 tmp = 0 tmp = Math.max(1, 1); max = 1 tmp = Math.max(1 + -3, -3); max =原创 2020-08-25 17:28:32 · 180 阅读 · 0 评论 -
算法训练营-第一周-数组链表
一.时间复杂度&空间复杂度 常见的时间复杂度 常量 O(1) 对数 O(logn) 线性 O(n) 二维 O(n2) 指数 O(2n) 阶乘 O(n!) 常见的空间复杂度 常量 O(1) 线性 O(n) 二维 O(n2) 递归 O(n) n为递归深度 二.数组 定义 数组是相同变量组成的有序集合 图示 实战题目 283. 移动零 1.两次遍历 2.快慢指针 /* 将数组中的0移动到最后,保持原来的非零数字的顺序。 要求不能开辟新数组。 方法一:原创 2020-08-23 21:20:27 · 205 阅读 · 0 评论 -
每天手撕一道算法题-130. 被围绕的区域
每天手撕一道算法题-130. 被围绕的区域 130. 被围绕的区域 题目 解析: 根据题目:边界的O不会被填充。只要是与边界的O相连的O,不去改变。其余O都填充为X即可。 从一行最后一行,第一列与最后一列找到边界的O,找到与边界O相连的O,这些O都标记为V。 然后把所有的遍历一遍。标记为O的被抹成X。标记为V的是不能被抹的,改成原来的O。 代码 class Solution { public void solve(char[][] a) { // 两行或者两列的情况不用考虑,直接原创 2020-08-11 23:41:13 · 214 阅读 · 0 评论 -
每日手撕一道算法题-322.零钱兑换
每日手撕一道算法题-322.零钱兑换 322. 零钱兑换 题目: 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1 示例 2: 输入: coins = [2], amount = 3 输出: -1 解析 举例面值是1,2,5 可以逆推。凑11最少的硬币数 =原创 2020-08-11 23:39:28 · 369 阅读 · 0 评论 -
每天手撕一道算法-64. 最小路径和
每天手撕一道算法-64. 最小路径和 64. 最小路径和 题目: 题目解析: 这题的意思是从左上角到右下角,(注意:每次是向下或者向右移动一格),所走过的路径数字和要求最小。 这道题要用动态规划,在原来的数组上去改变值。先从最近的开始,得到最优解,再慢慢递推到外面一层。 /* 这题的意思是从左上角到右下角,(注意:每次是向下或者向右移动一格),所走过的路径数字和要求最小。 这道题要用动态规划,在原来的数组上去改变值。先从最近的开始,得到最优解,再慢慢递推到外面一层。 */ class Solutio原创 2020-08-11 23:38:17 · 151 阅读 · 0 评论 -
极客时间-算法训练营-第二周
文章目录学习笔记1.哈希表定义图示具体实现是Map和SetHashSet源码分析HashMap源码分析时间复杂度实战题目[242. 有效的字母异位词](https://leetcode-cn.com/problems/valid-anagram/)[49. 字母异位词分组](https://leetcode-cn.com/problems/group-anagrams/)[1. 两数之和](https://leetcode-cn.com/problems/two-sum/)2.树链表与树,树与图的特殊关系图原创 2020-07-19 12:09:02 · 1036 阅读 · 0 评论