
算法
shaoweiah
这个作者很懒,什么都没留下…
展开
-
leetcode-152成绩最大子数组(优化)
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。//第一种思路:动态规划,用两个dp数组dp_max[i], dp_min[j],分别记录到第i个元素时的最大和最小连续乘积dp_max[i] = max(dp_max[原创 2020-05-18 21:07:46 · 301 阅读 · 0 评论 -
bfs-dfs-回溯-递归总结
参考http://chen-tao.github.io/2017/01/25/about-bfs/BFS常用于计算图的连通性,单源最短路径,计算最小操作次数···public class GraphNode{int val;List neighbors;}public void BFS(GraphNode start){LinkedList q = new LinkedList();HasheSet visited = new HasheSet();q.push(start);vi原创 2020-05-13 10:56:51 · 404 阅读 · 0 评论 -
leetcode--动态规划问题总结c++
按照labuladong大佬总结的一些模板,这里总结自己在做题过程中的一些思路和实践。1. 何为动态规划(DP)?按照一些比较官方的定义,就是"记住之前做过的事",在算法题中更确切的理解应为记住之前得到的答案,然后基于一个递推公式及一个或多个初始状态,将当前子问题的解由上一次子问题的解推出。相关概念:(1)动态规划算法:通过拆分问题,定义问题状态和状态之间的关系(这里我的理解,状态就是问题...原创 2020-05-07 19:36:34 · 263 阅读 · 0 评论 -
leetcode279--完全平方数(c++)
题目给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.解法1:动态规划,设置dp[i],表示生成i需要的完全平方数的个数,其中dp[0] = ...原创 2020-05-06 15:19:39 · 745 阅读 · 0 评论 -
面试题 04.03. 特定深度节点链表C++
题目给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。示例:输入:[1,2,3,4,5,null,7,8] 1 / \ 2 3 / \ \ 4 5 7 / 8输出:[[1],[2,3],[...原创 2020-05-05 18:18:21 · 198 阅读 · 0 评论 -
leetcode98--验证二叉搜索树(c++)
题目给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出:...原创 2020-05-05 17:27:02 · 213 阅读 · 0 评论 -
leetcode200--c++解答(dfs+bfs+并查集)
题目给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3解释: 每座岛屿只能...原创 2020-05-04 21:34:03 · 427 阅读 · 0 评论