算法训练营
编程之心
这个作者很懒,什么都没留下…
展开
-
每天手撕一道算法-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 = -2tmp = 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 · 215 阅读 · 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 · 1038 阅读 · 0 评论