数据结构记录和leetcode刷题记录

news/2024/10/18 10:17:43/

背景

时间复杂度

算法的执行时间与输入值之间的关系。

参考:算法中七种常见的时间复杂度 - 掘金 

 

 参考视频:1. 算法的时间复杂度_哔哩哔哩_bilibili

空间复杂度

算法的存储空间与输入值之间的关系。

参考:2. 算法的空间复杂度_哔哩哔哩_bilibili


 

二、数据结构

2.1 数组

练习题:485、283、27

 

var findMaxConsecutiveOnes = function(nums) {let maxCount = 0, count = 0;const n = nums.length;for (let i = 0; i < n; i++) {if (nums[i] === 1) {count++;} else {maxCount = Math.max(maxCount, count);count = 0;}}maxCount = Math.max(maxCount, count);return maxCount;
};作者:LeetCode-Solution
链接:https://leetcode.cn/problems/max-consecutive-ones/solution/zui-da-lian-xu-1de-ge-shu-by-leetcode-so-252a/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

第一种方法:一行代码
/*** @param {number[]} nums* @return {void} Do not return anything, modify nums in-place instead.*/var moveZeroes = function(nums) {nums.sort((a,b) => b? 0: -1)
};作者:Slow_sheep
链接:https://leetcode.cn/problems/move-zeroes/solution/jsyi-xing-dai-ma-by-prefixa-4bfu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。第二种方法:
var moveZeroes = function(nums) {//获取数组长度let len = nums.length;//循环遍历数组for(let i =0;i<len;i++){//当数组哪个位置是0 ,就删除这个这个位置的元素,然后在末尾补 0//从而就达到了 把所有0移动到数组末尾的要求且保持的非零元素的相对顺序if(nums[i]==0){nums.splice(i,1)nums.push(0)//当为0的元素删除后,下一个元素就会前进一位占据该位置,所以要从该位置在进行判断i--//当移动到末尾的元素,就不用再一次进行遍历了,所以遍历的长度要减去1位len--}}return nums
}作者:ZGLRunnning
链接:https://leetcode.cn/problems/move-zeroes/solution/by-zglrunnning-hq0c/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 

第一种方法:
var removeElement = function(nums, val) {for(let i=0;i<nums.length;i++){if(nums[i] == val){nums.splice(i,1);i--;}}return nums.length;
};作者:intelligent-i3ouman4ad
链接:https://leetcode.cn/problems/remove-element/solution/jsjie-ti-si-lu-qing-xi-ming-liao-by-inte-6v04/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。第二种:双指针算法
var removeElement = function(nums, val) {const n = nums.length;let left = 0;for (let right = 0; right < n; right++) {if (nums[right] !== val) {nums[left] = nums[right];left++;}}return left;
};作者:LeetCode-Solution
链接:https://leetcode.cn/problems/remove-element/solution/yi-chu-yuan-su-by-leetcode-solution-svxi/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

2.2 链表

 

2.3 队列

2.4 栈

2.5 哈希表

2.6 集合

2.7 树

1、两数之和

 解题代码:

var twoSum = function(nums, target) {const map = new Map();for(let i = 0, len = nums.length;i < len;i++) {if(map.has(target - nums[i])) {return [map.get(target - nums[i]), i];}map.set(nums[i], i);}return [];
};作者:jplusztx
链接:https://leetcode.cn/problems/two-sum/solution/javascript-by-jplusztx-fbb9/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2、两数相加

力扣

3、20. 有效的括号

4、21. 合并两个有序链表

var mergeTwoLists = function(l1, l2) {if (l1 === null) {return l2;} else if (l2 === null) {return l1;} else if (l1.val < l2.val) {l1.next = mergeTwoLists(l1.next, l2);return l1;} else {l2.next = mergeTwoLists(l1, l2.next);return l2;}
};作者:LeetCode-Solution
链接:https://leetcode.cn/problems/merge-two-sorted-lists/solution/he-bing-liang-ge-you-xu-lian-biao-by-leetcode-solu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

5、53. 最大子数组和

function Status(l, r, m, i) {this.lSum = l;this.rSum = r;this.mSum = m;this.iSum = i;
}const pushUp = (l, r) => {const iSum = l.iSum + r.iSum;const lSum = Math.max(l.lSum, l.iSum + r.lSum);const rSum = Math.max(r.rSum, r.iSum + l.rSum);const mSum = Math.max(Math.max(l.mSum, r.mSum), l.rSum + r.lSum);return new Status(lSum, rSum, mSum, iSum);
}const getInfo = (a, l, r) => {if (l === r) {return new Status(a[l], a[l], a[l], a[l]);}const m = (l + r) >> 1;const lSub = getInfo(a, l, m);const rSub = getInfo(a, m + 1, r);return pushUp(lSub, rSub);
}var maxSubArray = function(nums) {return getInfo(nums, 0, nums.length - 1).mSum;
};作者:LeetCode-Solution
链接:https://leetcode.cn/problems/maximum-subarray/solution/zui-da-zi-xu-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

其他解法:

6、66. 加一

7、爬楼梯

8、

9、

10、

11、

 解法:

12、环形链表

13、相交链表

14、打家劫舍

解法:

15、反转链表

 

16、 存在重复元素

18、 存在重复元素2

19、移动零

20、

 21、

以上参考链接地址:Leetcode刷题 704. 二分查找 Binary Search_哔哩哔哩_bilibili

有专门js的部分


http://www.ppmy.cn/news/708588.html

相关文章

腾达无线网卡linux怎么安装,怎么在linux系统安装腾达u1网卡

方法一&#xff0c;用RPM包安装驱动程序方法&#xff1a; 1&#xff0e;将驱动程序文件bcm5700-.src.rpm复制到一个临时目录中&#xff0c;并在此目录中运行以下命令&#xff1a; rpm –ivh bcm5700-.src.rpm 2&#xff0e;运行以下命令切换到驱动目录中&#xff1a; cd /usr/s…

腾达u6无线网卡 linux,腾达U6驱动下载 腾达U6无线网卡驱动 v0.12.2.3 官方版 下载-脚本之家...

tenda u6驱动是针对腾达u6无线网卡而开发的一款官方驱动程序,能够适用于Windows xp/7/8/8.1/10等系统,可以轻松解决无线网卡不能使用,或无法识别等问题。tenda u6是一款新一代穿墙网卡,真6dBi高增益超长天线,突破传统网卡天线增益新高度,大大提升接收与传输距离,信号轻松…

QT学习笔记:TCP客户端的实现

QT一般用来做客户端&#xff0c;我这里就简单讲一下怎么开发基于QT的TCP客户端。 1、用QtCreator创建项目 2、界面 3、.pro文件添加network QT core gui network 4、mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include &l…

css 画一条竖线 或横线

横线 <div style"width:100px;border: 1px solid #d0d0d0;"></div> 竖线&#xff1a; <div style"height: 30px;border: 1px solid #d0d0d0;"></div>

女人手掌中间有条竖线_手心有一条竖线代表什么

每个人都有属于自己的手相&#xff0c;有些人的手相是属于典型的、一般的手相特征&#xff0c;没有太多值得说的地方&#xff1b;而另一些人&#xff0c;他们的手相之中&#xff0c;却有一些别人所没有的手相特征&#xff0c;但却真实的出现在了自己的手掌中。比如说&#xff0…

CSS 画一条横线/竖线

作为优秀的java程序员,扎实(la ji )前端水平是我工作的基础 , 所以今天记录一下怎么用css画一条横线/竖线出来 , 以此为笔记, 将来不需要去翻阅别人的代码 废话不多说 笔记开始 #CSS 代码 /*中间的过度的横线*/.link-top {width: 50%;height: 1px;border-top: solid #ACC0D8…

智能指针的deleter机制

一、介绍 智能指针的deleter机制是指&#xff0c;当智能指针的引用计数降为0时&#xff0c;智能指针会自动调用一个指定的析构函数&#xff08;deleter&#xff09;来释放所管理的内存。这个析构函数通常是一个函数对象&#xff0c;可以是一个函数指针、一个lambda表达式或者一…

HTML插入一条竖线

处理方式&#xff1a; 1、图片&#xff08;略&#xff09; 2、字符&#xff1a;就跟普通的其他字符一样就可以 eg:| 3、边框:border-left或者border-right 4、背景颜色 假如那条竖线是100px的话&#xff0c;使用定位在那个位置写一个height100px&#xff0c;width1px&…