【LeetCode算法题-Image Smoother(Java实现)】教程文章相关的互联网学习教程文章

leetcode刷题笔记-104. 二叉树的最大深度(java实现)

题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree 解题思路 如果我们知道了左子树和右子树的最大深度 l 和 r,那么该二叉树的最大深...

leetcode常规算法题复盘(第五期)——八皇后【代码】

题目原文面试题 08.12. 八皇后 设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。注意:本题相对原题做了扩展 示例:输入:4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释: 4 皇后问题存在如下两个不同的解法。 [ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["...

LeetCode算法刷题记录【代码】

刷题参考:[Leetcode 题解-CyC2018](https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode 题解 - 目录.md)算法思想分类: [双指针](# 双指针) 排序 贪心思想 二分查找 分治 搜索 动态规划 数学 双指针 [167] 两数之和 II - 输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明:返回的下标值(i...

leetcode常规算法题复盘(第四期)——接雨水【代码】【图】

题目原文 42. 接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2: 输入:height = [4,2,0,3,2,5] 输出:9 提示:n == height.length 0 <= n <= 3 * 104 0 <= height[i] <= 105 ...

一个月获得40k+星,多次登顶的‘神仙级’算法宝典,带你刷爆LeetCode,横扫BATJ【图】

前言 现在几乎所有大厂的软件岗位面试都会有算法题的面试,那么该如何准备算法面试呢? 什么是算法面试? 算法面试只是技术面试的一部分,大家要意识到算法只是技术的一部分,技术还包括计算机基础知识、项目中的经验,解决问题的思路等等,因此不要把算法面试当作技术面试的全部。不要一提到软件岗位就是刷题。 如何准备算法面试 要多关注基础的数据结构与算法,基础的算法设计思想。面试中的题目不会特别难。高级数据结构除非特定...

LeetCode 107. 二叉树的层次遍历 II | Python【代码】

107. 二叉树的层次遍历 II题目 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层次遍历为: [[15,7],[9,20],[3] ]解题思路思路:广度优先搜索(BFS) 先看题目,题目要求返回...

leetcode 查找算法【代码】【图】

查找表:考虑的基本数据结构 第一类: 查找有无--set 元素a是否存在,通常用set:集合 set只存储键,而不需要对应其相应的值。 set中的键不允许重复 第二类: 查找对应关系(键值对应)--map 元素a出现了几次:dict-->字典 dict中的键不允许重复 第三类: 改变映射关系--map 通过将原有序列的关系映射统一表示为其他349 两个数组的交集 题目描述: 给定两个数组,编写一个函数来计算它们的交集。 示例 1:输入:nums1 = [1,2,2,1], n...

【算法】【字符串】Leetcode哈希【代码】

字母异位词分组 题目链接:https://leetcode-cn.com/problems/group-anagrams/ class Solution { public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string, int> hashmap;vector<vector<string>> res;for(auto str : strs){auto tmp = str;sort(tmp.begin(), tmp.end());if(hashmap.count(tmp)){res[hashmap[tmp]].push_back(str);}else{hashmap[tmp] = res.size();res.push_back({str});}}retu...

【算法】【哈希】Leetcode哈希【代码】

和为K的子数组 题目链接:https://leetcode-cn.com/problems/subarray-sum-equals-k/ 哈希 class Solution { public:int subarraySum(vector<int>& nums, int k) {int n = nums.size();int cnt = 0;int sum = 0;unordered_map<int, int> hashmap;hashmap[0] = 1;for(int i = 0; i < n; i++){sum += nums[i];if(hashmap[sum - k]) cnt += hashmap[sum - k];hashmap[sum]++;}return cnt;} };

【算法】【搜索和回溯】Leetcode子集【代码】

78. 子集 题目链接:https://leetcode-cn.com/problems/subsets/ class Solution { public:vector<vector<int>> res;vector<int> path;vector<vector<int>> subsets(vector<int>& nums) {dfs(nums, 0);return res;}void dfs(vector<int>& nums, int u){res.push_back(path);for(int i = u; i < nums.size(); i++){path.push_back(nums[i]);dfs(nums, i + 1);path.pop_back();}} };90. 子集II 题目链接:https://leetcode-cn.com/pr...

【算法】【搜索和回溯】Leetcode组合总和【代码】

39. 组合总数 题目链接:https://leetcode-cn.com/problems/combination-sum/ class Solution { public:vector<vector<int>> res;vector<int> path;vector<vector<int>> combinationSum(vector<int>& candidates, int target) {sort(candidates.begin(), candidates.end());dfs(candidates, target, 0, 0);return res;}void dfs(vector<int>& candidates, int target, int u, int sum){if(sum == target) {res.push_back(path);ret...

leetcode刷题记录:回溯算法注意事项【代码】【图】

leetcode 46题: 给定一个 没有重复 数字的序列,返回其所有可能的全排列。输入: [1,2,3] 输出: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] ] 思路就是按照这张图进行穷举 class Solution {private List<List<Integer>> res = new ArrayList<>();public List<List<Integer>> permute(int[] nums) { List<Integer> path = new ArrayList<>();backTrack(path, nums);return res;}private void backTrack(List<Integer...

LeetCode算法题编号891“子序列宽度之和”算法分析和解题思路在前两篇随笔中(在找工作的途中)【代码】

我在研究该算法题的时候是先经过最笨的方法,然后慢慢优化得到计算量相对较少的算法。在研究该算法中断断续续的花了10个小时吧,基本都是晚上思考,白天为找工作准备。晚上思考算法并进行代码实现。 我也看了官方的答案,官方给的答案没有考虑数组中是否有重复的数。所以我这给了考虑重复的数的答案。如不准确还请告知。谢谢。 题目是: 给定一个整数数组 A ,考虑 A 的所有非空子序列。 对于任意序列 S ,设 S 的宽度是 S 的最大元...

LeetCode 102. 二叉树的层序遍历 Java【代码】【图】

这个层序遍历要求返回每层的节点,正常的BFS从队列中弹出一个节点后就判断其有没有左子树和右子树,所以直接用BFS实现的话无法分层输出。 需要记录每层的节点数目,增加一个for循环就可以了。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ class Solution {public List<List<Integer>> levelOrder(TreeNode...

leetcode刷题-贪心算法(持续更新)【代码】【图】

本来想写完递归再写这个专栏的,但是老师给了一个贪心的题目,没办法只能开一个板块了 简介 在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。 与这个局部最优解相对应的全局最优解会在动态规划里面展现出来。例题 先来一道经典的贪心热热手,跳跃游戏就算是一个比较经典的贪心题思路 一开始看到这个题目不知不觉开始用动态规划在写了 (ー〃) 仔细一看返...