自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 dijkstra

【代码】dijkstra。

2023-04-11 21:45:15 119 1

原创 函数重载【递归,闭包】

【代码】函数重载【递归,闭包】

2023-01-12 13:38:58 142

原创 leetcode戳气球【双指针、动态规划】

/核心思想一句话:求出动态规划中不变的最小子问题 接着把子问题依次推导出更大的问题 而子问题怎么不受其他子问题的影响的关键就是戳破一个气球的时候认定它是最后一个戳破的 那么就不会影响到其他子问题 用dp[i][j]来表示在(i,j)开区间的最大值 dp[i][j]求的最大值实际上是以i为未破的左气球和以j未破的右气球其中戳破的气球的最大值。

2022-12-27 21:24:00 117

原创 长度为2n的数组拆分成两个n长度的数组的和之间的差绝对值最小值【递归】

长度为2n的数组拆分成两个n长度的数组的和之间的差绝对值最小值【递归】

2022-07-24 17:37:51 283

原创 对算式设计运算优先级求得所有结果【分治】

对算式设计运算优先级【分治】

2022-07-18 22:49:58 92

原创 leetcode生成有效的括号种类【回溯】

啊啊啊

2022-07-09 22:21:47 105

原创 Could not open ‘/lib/ld-linux-aarch64.so.1‘: No such file or directory【docker前端开发环境】

https://www.cnblogs.com/savorboard/p/bash-guide.html#file-operations

2022-06-21 14:21:49 6306 2

原创 最长定差子序列 【动态规划】

let arr = [1, 20, 3, 40, 5, 60, 7, 8], d = 2;let map = new Map(arr.map((e) => [e, 1]));let max = 1;for (let i = 1; i < arr.length; i++) { if (map.has(arr[i] - d)) { map.set(arr[i], map.get(arr[i] - d) + 1); max = Math.max(map.get(arr[i

2022-06-18 10:53:58 1501

原创 最长等差子序列、最长定差子序列、最长的斐波那契子序列的长度【动态规划思想】

const arr = [1, -20, 3, 5, 40, 7, 60];function A1(A) { const mp = new Map(); const n = A.length; const dp = new Array(n).fill(0).map(() => new Array(n)); let res = 0; for (let i = 0; i < n; i++) { mp.set(A[i], i); for (let j = i .

2022-05-31 11:24:27 190

原创 数组的选择n个不相邻的数的最大值【动态规划】

const slices = [1, 8, 6, 11, 2, 7, 1, 1, 7];const l = slices.length;const n = l / 3;const dp = new Array(l).fill(0).map((e) => new Array(n).fill(0));dp[0][0] = slices[0];for (let i = 1; i < l; i++) { const siv = slices[i]; if (i < 3) {

2022-05-26 18:28:31 549

原创 矩阵中任一一个矩形和【动态规划思想】以及找到指定不超过某个数的矩阵和

const matrix = [[0], [1]];function total(mx, dy, dx, dy1, dx1) { const m = mx.length; const n = mx[0].length; const sums = new Array(m + 1).fill(0).map(() => new Array(n + 1).fill(0)); if (m > 0) { for (let i = 0; i < m; i++) {

2022-05-24 15:32:48 109

原创 leetcode最大平均值和的分组【动态规划】

let arr = [1, 2, 3,];let l = arr.length;let k = 1;let dp = new Array(l).fill(0).map((e) => new Array(k).fill(0));let sums = [];dp[0][0] = sums[0] = arr[0];for (let i = 1; i < l; i++) { sums[i] = sums[i - 1] + arr[i]; dp[i][0] = sums[i] /

2022-05-14 14:57:13 152

原创 leetcode两个字符串的删除操作【动态规划思想】

let word1 = "sea", word2 = "eat" function name() { const m = word1.length, n = word2.length; const dp = new Array(m + 1).fill(0).map(() => new Array(n + 1).fill(0)); for (let i = 1; i <= m; i++) { const c1 = word1[i - 1]; ...

2022-04-24 09:21:48 1984

原创 数字千分位分割

当然有n种思路let s = "3425235aa"let temp = s.split('').reverse()let tempi = []for (let i = 0; i < temp.length; i++) { if (i % 3 === 0 && i !== 0) { tempi.push(i) }}let index = 0for (let j = 0; j < tempi.length; j++) { temp.splice(t

2022-04-22 11:36:33 128

原创 深克隆【回溯】【队列】

没什么说的var a = { b: { c: [{ c: 3 }] }, e: [{ a: 2 }]}function deepClone(obj) { let result = Array.isArray(obj) ? [] : {} for (const key in obj) { const thisValue = obj[key] if (thisValue.constructor===Array||thisValu

2022-04-21 14:32:36 3040

原创 字母的组合【动态规划与递归】

题目是将1-26个字母排序 输入数字 返回能够组成的字母组合总数 答案未经严格验证!!// 1-26// a-z// nlet s = "124510101010103";// 2 1 6 8 4// 2 1 6 84 !// 2 16 8 4// 2 1 68 4 !// 2 16 84 !// 21 6 8 4// 21 68 4 !// 21 6 84 !// total =3let arr = s.split("");let total = 0,

2022-04-17 10:53:12 2394

原创 队列与栈代替递归【队列】【栈】

基于对象数据是引用传递的特点,利用栈的的先进先出的来对每一个对象添加一个data属性let nums = [ { children: [{ children: [] }, { children: [] }, { children: [] } ]

2022-04-14 12:29:53 2135

原创 leetcode三数之和【双指针】

let nums = [0, 0, 0, 0, 0, 1]let n = nums.length;nums = Array.from(nums.sort((a, b) => a - b))let res = []// 枚举 afor (let i = 0; i < n; ++i) { // 第一次去重 if (i > 0 && nums[i] == nums[i - 1]) { continue; } let k

2022-04-13 18:08:55 262

原创 二叉树搜索树的插入、删除、查找【迭代法】

//二叉树节点class Node { data = null left = null right = null constructor(key) { this.data = key; }}//树class Tree { root = null count = null find(data) { let currentNode = this.root while (current.

2022-03-30 17:33:46 1156

原创 leetcode 不同路径【动态规划】

题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?m = 3, n = 2let dp = new Array(n).fill(1)dp[0] = 1left = 1for (let i = 1; i < m; i++) { for (let j = 1; j < n; j++) { d

2022-03-25 11:42:01 2189

原创 leetcode交错字符串【动态规划】【组合方式】 重要程度3颗星

给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:s = s1 + s2 + … + snt = t1 + t2 + … + tm|n - m| <= 1交错 是 s1 + t1 + s2 + t2 + s3 + t3 + … 或者 t1 + s1 + t2 + s2 + t3 + s3 + …注意:a + b 意味着字符串 a 和 b 连接s1

2022-03-23 18:13:33 251

原创 leetcode丢失的数字【哈希表】

let nums = [9, 6, 4, 2, 3, 5, 7, 0, 1] function missingNumber(nums) { const set = new Set(); const n = nums.length; for (let i = 0; i < n; i++) { set.add(nums[i]); } let missing = -1; for (let i = 0; i <= n; .

2022-03-21 10:59:32 103

原创 最长回文子串【中心扩展】

let s = "bcaaaacbabad";function longestPalindrome(s) { if (s == null || s.length < 1) { return ""; } let start = 0, end = 0; for (i = 1; i < s.length; i++) { let len = Math.max(expandAroundCenter(s, i, i), e.

2022-03-18 11:53:21 226

原创 leetcode移动零【双指针】

let nums = [1, 2, 0, 0, 0, 2, 3, 12, 0, 0, 24]n = nums.length, right= 0, left= 0;while (right < n) { if (nums[right] != 0) {//左指针的值始终在非零处, 右指针一直移动,但是右指针遇到到非零的时候,就调换两者的值,不管左指针在哪。 temp = nums[left]; nums[left] = nums[right]; .

2022-03-17 16:36:49 94

原创 扰乱数组【洗牌算法】

let arr = [1,2,4]function shuffle() { for (let i = 0; i < arr.length; ++i) { const j = Math.floor(Math.random() * (arr.length - i)) + i;//怎么几率相等的重要一点 const temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } re

2022-03-17 11:20:17 341

原创 找到一个数的最少次数【二分查找】

let n = 5, bad = 4;let i = 0, j = n;let index = 0while (i <= j) { index++ const o = Math.floor((j + i) / 2) if (o < bad) { i = o + 1 } else if (o === bad) { console.log(index + 1); break } else .

2022-03-17 10:04:29 669

原创 合并两个升序数组【插入排序】

插入排序思想:let nums1 = [1, 2, 3, 0, 0, 0], m = 3, nums2 = [2, 2, 4], n = 3let nl1 = m;for (let i = 0; i < n; i++) { let pre = nums2[i] let n = nl1 while (n > 0 && nums1[n - 1] > pre) { nums1[n] = nums1[n - 1] n--

2022-03-16 17:30:03 1153

原创 处理区域数据【其他】

let area = { "province": [{ "value": "150000", "label": "内蒙古自治区", "key": "150000" }], "city": [{ "value": "150200", "label": "包头市", "key": "150200" }, { "va

2022-03-10 16:20:26 148

原创 买卖股票有手续费与含冷冻期【贪心算法】【动态规划 】

let prices = [8, 4, 3, 1, 3, 2, 8, 100, 4, 9, 1, -1, -2];fee = 2;prices.push(0); //push一个是为了方便计算ep - tmin的差值let tmin = prices[0];let res = 0;for (let i = 1; i < prices.length; i++) { const e = prices[i]; const ep = prices[i - 1]; if (e <

2022-03-08 22:44:40 164

原创 单调递增的数字【贪心算法】

**题目:**给定⼀个⾮负整数 N,找出⼩于或等于 N 的最⼤的整数,同时这个整数需要满⾜其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满⾜ x <= y 时,我们称这个整数是单调递增的。)let s = '109';function name(s) { let N = s.split('') const l = N.length let index = l for (let i = l - 1; i >= 0; i--) {

2022-03-04 17:51:53 636

原创 划分字⺟区间【贪心算法】

题目:字符串 S 由⼩写字⺟组成。我们要把这个字符串划分为尽可能多的⽚段,同⼀字⺟最多出现在⼀个⽚段中。返回⼀个表示每个字符串⽚段的⻓度的列表。示例:输⼊:S = “ababcbacadefegdehijhklij”输出:[9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字⺟最多出现在⼀个⽚段中。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的⽚段数较少。let S = "asdfhgk;

2022-03-03 18:07:56 111

原创 ⽆重叠区间【贪心算法】

**题目:**给定⼀个区间的集合,找到需要移除区间的最⼩数量,使剩余区间互不重叠。注意:可以认为区间的终点总是⼤于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输⼊: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输⼊: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:输⼊: [

2022-03-02 18:02:03 131

原创 leetcode 柠檬水找零 【贪心算法】

在柠檬⽔摊上,每⼀杯柠檬⽔的售价为 5 美元。顾客排队购买你的产品,(按账单 bills ⽀付的顺序)⼀次购买⼀杯。每位顾客只买⼀杯柠檬⽔,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你⽀付 5 美元。注意,⼀开始你⼿头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输⼊:[5,5,5,10,20]输出:true解释:前 3 位顾客那⾥,我们按顺序收取 3 张 5 美元的钞票。第 4

2022-03-01 14:49:00 390

原创 暴力与贪心环形遍历解决 leetcode加油站问题

let array = [2, 3, 4], cost = [3, 4, 3]function find() { let j = array.length s = j - 1 let temp = [] for (let n = 0; n < j; n++) { temp.push(array[n] - cost[n]) } for (let i = 0; i < j; i++) { let ti = i, tj = j let

2022-02-23 17:49:12 4832

原创 leetcode跳跃游戏【贪心】

题目:给定⼀个⾮负整数数组,你最初位于数组的第⼀个位置。数组中的每个元素代表你在该位置可以跳跃的最⼤⻓度。示例 1:输⼊: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后⼀个位置。示例 2:输⼊: [3,2,1,0,4]输出: false解释: ⽆论怎样,你总会到达索引为 3 的位置。但该位置的最⼤跳跃⻓度是 0 , 所以你永远不可能到达最后⼀个位置。**贪心策略:每次移动取最⼤跳跃步数(得到最

2022-02-22 10:01:40 2138

原创 leetcode 摆动序列【贪心】

题目:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第⼀个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列,例如, [1,7,4,9,2,5] 是⼀个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反,[1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第⼀个序列是因为它的前两个差值都是正数,第⼆个序列是因为它的最后⼀个差值为零。给定⼀个整数序列,返回作为摆动序列的最⻓⼦序列的⻓度。 通过从原始序列中删除⼀些(也可以不删

2022-01-05 09:32:51 273

原创 01背包与分割等和⼦集与目标和【动态规划】

头大,头铁

2021-12-20 22:44:20 387

原创 整数拆分【动态规划】

题目是:给定⼀个正整数 n,将其拆分为⾄少两个正整数的和,并使这些整数的乘积最⼤化。 返回你可以获得的最⼤乘积。let n = 10let dp = new Array(n + 1).fill(0)dp[2] = 1dp[3] = 2 for (let i = 4; i <= n; i++) { for (let j = 2; j < i; j++) { dp[i] = Math.max(dp[i], Math.max((i - j) * j, dp[i -

2021-12-20 16:34:23 298

原创 leetcode 最长公共子序列【动态规划】

let s1 = "adsv", s2 = "amsvld";let m = s1.length, n = s2.length;let dp = new Array(m + 1).fill(0).map((v) => new Array(n + 1).fill(0)); //为什么要m+1 与n+1 .因为有可能s1 或s2 为空串for (let i = 1; i <= m; i++) { const ts1 = s1[i]; for (let j = 1; j &

2021-12-19 22:05:13 99

原创 leetcode 地图分析[动态规划]

var arr = [[1,0,1],[0,0,0],[1,0,1]]function name(arr) { let dp = new Array(arr.length).fill(0).map(v => new Array(arr[0].length).fill(0)) let l = dp.length let w = dp[0].length let max = 0 for (let i = 0; i < l; i++) {

2021-12-04 12:55:26 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除