![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【leetcode】
文章平均质量分 70
Bruce-XIAO
这个作者很懒,什么都没留下…
展开
-
位运算及其应用
位运算及其应用原创 2023-02-27 23:59:43 · 344 阅读 · 0 评论 -
二维矩阵的元素和
矩阵元素和原创 2023-01-15 22:26:46 · 2123 阅读 · 0 评论 -
字符串哈希
字符串哈希原创 2023-01-08 21:11:10 · 843 阅读 · 0 评论 -
回溯法-分割回文串
分割回文串#include<iostream>#include<vector>#include<string> using namespace std;class Solution {public: vector<vector<string>> result; vector<vector<string>> partition(string s) { int len = s.length(原创 2022-03-21 20:51:20 · 342 阅读 · 0 评论 -
回溯法求N皇后问题
N皇后问题搜索解的过程如图可以看到,回溯是将同一层的选择尝试完成之后,才回到上一层。类似于一种暴力的搜索算法。isValid函数,实际上是控制是否继续往下一层搜索,做剪枝优化。#include<iostream>#include<vector> using namespace std;int ans = 0;void backtracking(vector<vector<char>> &board,int row,int n);原创 2022-03-20 20:45:02 · 1617 阅读 · 0 评论 -
回溯算法总结
回溯法求全排列package backtrack;import com.sun.org.apache.xpath.internal.operations.Bool;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;public class lc46 { public List<List<Integer>&原创 2022-03-20 22:31:29 · 401 阅读 · 0 评论 -
动态规划(入门级)
动态规划(入门级)动态规划(dynamic programming),以下简称dp,本质是带了记忆+枚举,分析时从上至下(深度搜索),dp的思考方式是从底至上,少数从上至下。1.整数拆分给定一个正整数?n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×3 ×4 = 36。思路:n拆分成至少原创 2021-11-20 17:19:30 · 692 阅读 · 0 评论 -
动态规划之背包问题总结
01背包简介:01背包是一个经典的问题,本文总结了四种01背包的解法原创 2021-11-20 16:52:08 · 848 阅读 · 0 评论 -
二分查找 边界查找
二分查找1. 简介二分查找是一种高效的查找算法,二分必有序,二分查找有许多细节共6处细节2. 左右指针初始化l = -1, r = N; 指针不越界考虑两种极端情况情况1: arr = [1,2,3,4,5,6], key = 7, 小于时l指针不断右移初始 l = -1, r = N当 l = N-2, N-2+1 = N-1,当 l = N-1,N-1+1 = N = r, 退出while, 左指针不越界情况2: arr = [1, 2, 3, 4, 5, 6], key = 0原创 2021-10-14 19:58:26 · 831 阅读 · 0 评论 -
最长上升子序列
最长上升子序列 dp + 二分法#include<bits/stdc++.h>using namespace std;//动态规划 O(n^2)int lengthOfLIS(vector<int>& nums) { int result = 0; int n = nums.size(); vector<int> dp(n,1); if(n == 1){ return n; } for(int i=1;i<n;i++原创 2021-10-15 00:06:57 · 109 阅读 · 0 评论 -
零钱兑换2
力扣零钱兑换2状态定义:求组合数,二维,dp[k][j] 表示前k枚硬币下,金额k的凑成方式数量,这里是恰好凑成一维 ,定义dp[j] 表示金额为j时 ,有多少中凑成方式状态转移:现在由前k枚硬币,dp[j] 要么由放上第k枚。要么不放上第k枚,不放则金额 j 由前 k-1枚组成 dp[j] = dp[j] + dp[j-coins[k]]边界条件:当没有容量时,啥也不放,金额为0,放0个硬币,有一种凑成方式, dp[0] = 1如何枚举?由于一枚硬币可以被用多次,也就是coins[原创 2021-09-25 09:15:05 · 192 阅读 · 0 评论 -
最长递增路径 DFS&BFS+toposort
剑指 Offer II 112. 最长递增路径原题链接:方法一:带记忆的深度优先搜索,维护一个记忆数组,当某个值被计算过,直接返该值,否则深度优先搜索搜索该值记忆化搜索模板:dfs(memo,x,y){ if meno[x][y] 有值 直接返回该值 剪枝,判断变化方向是否在边界内 继续递归+改变memo的值 meno[x][y] = dfs(memo,x+变化方向,y+变化方向) return memo[x][y]}方法二:拓扑排序+广度优先遍历,在遍历过程中删除入原创 2021-09-21 10:23:52 · 133 阅读 · 0 评论 -
力扣486-预测赢家
预测赢家本文将给出本题的思考过程,从递归方法一步一步推导至动态规划方法,个人觉得推完整个过程很有收获,阅读本文大概需要20分钟原题:https://leetcode-cn.com/problems/predict-the-winner/问题是给定一个区间,[1,5,2] ,两人交替从数组两头取数,累计取到的数越多的人获胜。给定一个数组,预测第一个玩家是否能获胜。[1,5,2] -> false[1, 5, 233, 7] ->true思考:交替取数,一种直观方法是贪婪策略,如[1,原创 2021-08-02 00:18:01 · 503 阅读 · 0 评论 -
力扣312-戳气球区间dp
1.312戳气球[3,1,5,8]维护一个dp矩阵,dp[i][j]表示从i到j能够获得的最大硬币数量,定义子问题,dp[i][j] 的最大值等于max( dp[i][k] + dp[k][j]) , i<k<j ;正向思考,从左至右分别算dp[i][j], 左边被戳破的气球用1代替3 -> 131 = 31 -> 115 = 55 -> 158 = 408 –> 118 = 8Sum = 3+5+40+8 = 56,按顺序点不能获取最大值,如先点 1原创 2021-08-01 16:52:16 · 200 阅读 · 0 评论 -
检测有向图和无向图中的环
有向图和无向图的环检测1.无向图可以用DFS检测,思想是,DFS过程,记录当前结点的父结点,如果某结点以及访问过且不是该结点的父结点,则存在环原创 2021-06-01 11:28:03 · 632 阅读 · 0 评论 -
字符串反转
反转字符串及其字串,分别实现:hello world=>dlrow olleh 和 hello world=>world hello思路:顺序反转:利用指针对撞思想,分别从前往后和从后往前遍历,并交换字符。子串反转:从最后一个字符开始往前遍历,遇到空格,把该段复制到结果字符串中,第一个子串,在循环结束后在加入结果字符串。//reverse.cpp#include&l...原创 2019-01-26 18:07:06 · 1056 阅读 · 0 评论 -
leetcode 盛最多水的容器
题目:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容...原创 2019-01-25 18:52:55 · 344 阅读 · 0 评论 -
leetcode长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例: 输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间...原创 2019-01-25 18:42:54 · 730 阅读 · 0 评论 -
编程求逆序数
编程求逆序数 逆序数,也就是一个排列中当某一对元素的先后次序与标准次序(从小到大)不同时,就说它构成一个逆序。 如:3 5 2 1 4 的逆序数:2+3+1+0+0=6 ,3与2,1; 5与2,1,4; 2与1,就是找出排列第i个数后有几个比它小的数,有几个就有几个逆序数,遍历该排列,找出所有逆序数并求和就是该排列的总逆序数。 话不多说,直接上代码#incl...原创 2018-05-05 22:28:28 · 7947 阅读 · 2 评论 -
LeetCode 数字三角形最小路径和问题
题目描述:Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the following triangle[ [2], [3,4],...原创 2018-05-19 17:24:56 · 1620 阅读 · 0 评论 -
括号配对问题
题目描述:现在,有一行括号序列,请你检查这行括号是否配对。输入描述:第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")" 四种字符输出描述:每组输入数据的输出占一行,如果该字符串中所...原创 2019-01-05 21:29:22 · 508 阅读 · 0 评论