binary-tree-maximum-path-sum leetcode maximum

【总结】浅刷leetcode,对于位运算提高性能的一些总结

目录 什么是位运算? 位运算技巧 1. 判断奇偶性 2. 交换两个数 3. 判断一个数是否是2的幂次方 4. 取绝对值 5. 计算平均数 结论 位运算技巧是计算机科学中非常重要的一部分,它可以用来解决很多实际问题。在本篇博客中,我们将介绍一些常见的位运算技巧,以及它们在实际应用中的使用。 什么是位运 ......
leetcode 性能

leetcode_打卡09

leetcode_打卡09 题目:443. 压缩字符串 思路:双指针 代码: class Solution { public int compress(char[] chars) { int n = chars.length; int write = 0, left = 0; for (int re ......
leetcode

leetcode_打卡10

leetcode_打卡10 题目:283. 移动零 思路:双指针,数值互相交换,不是复制覆盖 代码: class Solution { public void moveZeroes(int[] nums) { int n=nums.length; int l=0,r=0; while(r<n){ i ......
leetcode

【DP】LeetCode 312. 戳气球

题目链接 312. 戳气球 思路 参考动态规划套路解决戳气球问题 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[ ......
气球 LeetCode 312

leetcode-876链表的中间节点

找链表的中间节点 思路 心得 当不知道while的终止条件时,可以先写while(true),然后在循环体中写终止条件,这样写的好处是可以暂时不考虑终止条件,使思路更清晰;坏处是这样有时候会使循环体的内容很混乱 要注意分类!本题中把情况分为节点个数是奇数和偶数去分析,最终找到统一的循环终止条件,就能 ......
节点 leetcode 876

leetcode-234回文链表

回文链表 方法一:借助数组进行判断 把节点的值复制到一个数组中再利用数组进行判断,但是这样需要占用额外的空间 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Lis ......
回文 leetcode 234

【LeetCode动态规划#10】完全背包问题实战,其三(单词拆分,涉及集合处理字符串)

单词拆分 力扣题目链接(opens new window) 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "le ......
字符串 背包 单词 实战 字符

LeetCode 22 括号生成

LeetCode | 22.括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出: ......
括号 LeetCode 22

LeetCode 周赛 341 场,模拟 / 树上差分 / Tarjan 离线 LCA / DFS

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末有单双周赛,双周赛我们讲过了,单周赛那天早上有事没参加,后面做了虚拟竞赛,然后整个人就不好了。前 3 题非常简单,但第 4 题有点东西啊,差点就放弃了。最后,被折磨了一个下午和一个大 ......
LeetCode Tarjan 341 LCA DFS

LeetCode-Go:一个使用 Go 语言题解 LeetCode 的开源项目

在中国的 IT 环境里,大多数场景下,学习算法的目的在于通过笔试算法题。 但算法书林林总总,有时候乱花渐欲迷人眼。 杜甫有诗云:读书破万卷,下笔如有神。不管选择哪本书,只要深入学习,分层次,逐层进阶,一定可以将算法攻克。 笔者强烈推荐一个 Github 开源项目 LeetCode-Go,你不仅可以把 ......
LeetCode 题解 LeetCode-Go 语言 项目

LeetCode Top100: 买卖股票的最佳时机 (python)

LeetCode Top100: 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交 ......
时机 LeetCode 股票 python 100

LeetCode Top100:比特位计数(Python)

LeetCode Top100:比特位计数 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。 示例 1: 输入:n = 2 输出:[0,1,1] 解释: 0 --> 0 1 --> 1 2 -- ......
LeetCode Python 100 Top

LeetCode Top100: 找到所有数组中消失的数字(Python)

LeetCode Top100: 找到所有数组中消失的数字 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例 1: 输入:nums = [4,3,2,7,8, ......
数组 LeetCode 数字 Python 100

LeetCode Top100:回文链表 (python)

LeetCode Top100:回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1] 输出:true 示例 2: 输入:head = [1,2] 输出:false 提示: ......
回文 LeetCode python 100 Top

LeetCode Top100: 相交链表(Python)

LeetCode Top100: 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保 ......
LeetCode Python 100 Top

LeetCode Top100: 环形链表(python)

给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的 ......
环形 LeetCode python 100 Top

贪心算法基础及leetcode例题

#理论 **本质:**找到每个阶段的局部最优,然后去推导得到全局最优 **两个极端:**常识&&很难: 很多同学通过了贪心的题目,但都不知道自己用了贪心算法,因为贪心有时候就是常识性的推导,所以会认为本应该就这么做! 套路: 贪心没有套路,说白了就是常识性推导加上举反例 做题的时候,只要想清楚 局部 ......
例题 算法 leetcode 基础

【DP】LeetCode 132. 分割回文串 II

题目链接 132. 分割回文串 II 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[ ......
回文 LeetCode 132 II

LeetCode Top100: 只出现一次的数字(python)

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例 1 : 输入:nums = [2,2,1] 输出:1 示例 2 : 输入:nums = [4, ......
LeetCode 数字 python 100 Top

Leetcode 206. 反转链表

初次写代码时,被边界条件各种ban,总是忽略,遂放弃,以下整理出一些评论区大佬边界条件不明显或不需要边界条件的解法。边界条件繁琐的代码不要背,否则笔试各种ban。 比较经典的是下面这种写法,有点抽象,根本思想是有三个指针: 第一个指针在反转段前一个节点固定; 第二个指针是当初的第一个需要反转的节点, ......
Leetcode 206

leetcode_打卡08

leetcode_打卡08 题目:334. 递增的三元子序列 思路:分成左边L和右边R,只要找到该数左边比它小的,右边比他大的即可 代码: class Solution { public boolean increasingTriplet(int[] nums) { int n=nums.lengt ......
leetcode

【LeetCode动态规划#09】完全背包问题实战,其二(零钱兑换和完全平方数--求物品放入个数)

零钱兑换 力扣题目链接(opens new window) 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 示例 1: 输入:coins = [1 ......
零钱 背包 实战 个数 LeetCode

LeetCode/分隔数组以得到最大和

给你一个整数数组 arr,请你将该数组分隔为长度 最多 为 k 的一些(连续)子数组。 分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。 返回将数组分隔变换后能够得到的元素最大和 ###一. 动态规划(正向递推) 分析:数组的最大和是和子数组最大和关联的,对子问题的优化可以带来对整个问 ......
数组 LeetCode

35. 搜索插入位置(leetcode)

https://leetcode.cn/problems/search-insert-position/ 简单二分,这里可以判断return,相当于剪枝 class Solution { public: int searchInsert(vector<int>& nums, int target) ......
leetcode 位置 35

704. 二分查找(leetcode)

https://leetcode.cn/problems/binary-search/ 简单二分 class Solution { public: int search(vector<int>& nums, int target) { int l=0,r=nums.size()-1; while(l ......
leetcode 704

【优先队列】LeetCode 378. 有序矩阵中第 K 小的元素

题目链接 378. 有序矩阵中第 K 小的元素 思路 因为矩阵的每行和每列元素均按升序排序,所以我们可以打破传统思路 代码 class Solution { public int kthSmallest(int[][] matrix, int k) { PriorityQueue<int[]> pr ......
队列 矩阵 LeetCode 元素 378

leetCode 206 反转链表(头插法+ 两种递归)

递归 # 优先处理尾部的链表,此时需要返回子链表的头节点和尾节点 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # sel ......
leetCode 206

【DP】LeetCode 97. 交错字符串

题目链接 97. 交错字符串 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] 为 ......
字符串 字符 LeetCode 97

【LeetCode动态规划#08】完全背包问题实战与分析(零钱兑换II)

零钱兑换II 力扣题目链接(opens new window) 给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1: 输入: amount = 5, coins = [1, 2, 5] 输出: 4 解释: 有四种方式可以凑成总金额: 5 ......
零钱 背包 实战 LeetCode 动态

【DP】LeetCode 题号.题目

题目链接 377. 组合总和 Ⅳ 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] ......
题号 LeetCode 题目