冒泡排序
冒泡排序逻辑
1、比较两个相邻的元素 a、b,如果 a>b,则把 a、b 调换位置;反之,不调换位置。
2、从头到尾比较每一对相邻的元素,并且重复第一步的操作。操作完这步骤后,最后一位元素就是最大的元素。
3、针对所有元素重复以上的步骤(最后一位元素除外)。
JavaScript 代码实现123456789101112131415const arr = [1, 2, 6, 34, 7, 9, 11, 16, 13, 19, 0, 3]function bubbleSort(arr) { let len = arr.length for (let i = 0, max = len - 1; i < max; i++) { for (let j = 0, max = len - 1; j < max; j++) { if (arr[j] > arr[j + 1]) { let arrMax = arr[j] arr[j] = arr[j + 1] arr[j + ...
LeetCode 020:有效的括号
题目描述有效的括号
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:12输入:s = "()"输出:true
示例 2:12输入:s = "()[]{}"输出:true
示例 3:12输入:s = "(]"输出:false
Map 解答1234567891011121314151617181920212223242526const isValid = function (s) { if (s.length == 1) { return false } const sVar = new Map([ ['(', ')'], ['[', ']'], [' ...
LeetCode 049:字母异位词分组
题目地址https://leetcode.cn/problems/group-anagrams/
题目描述123456789101112131415161718给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1:输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],["nat","tan"],["ate","eat","tea"]]示例 2:输入: strs = [""]输出: [[""]]示例 3:输入: strs = ["a"]输出: [["a"]]
解答123456789101112cons ...
LeetCode 039:组合总和
题目地址
https://leetcode.cn/problems/combination-sum/
题目描述123456789101112131415161718192021222324252627给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1:输入:candidates = [2,3,6,7], target = 7输出:[[2,2,3],[7]]解释:2 和 3 可以形成一组候选,2 + 2 + 3 = 7 。注意 2 可以使用多次。7 也是一个候选, 7 = 7 。仅有这两种组合。示例 2:输入: candidates = [2,3,5], target = 8输出: [[2,2,2,2],[2,3,3] ...
LeetCode 030:串联所有单词的子串
题目地址
https://leetcode.cn/problems/substring-with-concatenation-of-all-words/
题目描述1234567891011121314151617181920212223242526272829303132333435给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。例如,如果 words = ["ab","cd","ef"], 那么 "abcdef", "abefcd","cdabef", "cdefab","efabcd", 和 "efcdab" 都是串联子串。 "acdbef" 不是串联子串,因为他不是任何 words 排列的连接。返回所有串联子串在 s 中的开始索引。你可以以 任意顺序 ...
LeetCode 006:N 字形变换
题目地址
https://leetcode.cn/problems/zigzag-conversion/
题目描述1234567891011121314151617181920212223242526272829将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入:s = "PAYPALISHIRING", numRows = 3输出:"PAHNAPLSIIGYIR"示例 2:输入:s = "PAYPALISHIRING", numRows = 4输出:"PI ...
LeetCode 005:最长回文子串
题目地址
https://leetcode.cn/problems/longest-palindromic-substring/
题目描述12345678910111213给你一个字符串 s,找到 s 中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"
解法一 中心扩散法由简入繁先看一个最简单的字符串,比如’aabaaabaa’;
第一步,i=0,这时候 res=’a’,如果回文子串长度是奇数,左边无值,右边有值,这时候最长回文子串是’a’,如果回文子串长度是偶数,res=’aa’这时候最长回文子串是’aa’;
第二步,i=1,这时候 res=’a’,如果回文子串长度是奇数,左边有一个值’a’,右边的值为’b’,这时候当前 i 位置最长回文子串是’a’,如果回文子 ...
LeetCode 003:无重复字符的最长子串
题目地址
https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
题目描述123456789101112131415161718给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
解法 滑动窗口+双指针思路
因为需要找无重复的子串,我们可以定义初始化的子串是第一个字符,也就是 let newS ...
https的图片在移动端展示问题
问题描述引入的 src 图片地址是 https 时,在 pc 端和 h5 均正常显示,但在手机端均无法显示,并且图片链接在微信里面也无法打开;
解决方案123456789<meta name="referrer" content="never" />// 或<img src="https://example.com/images/myimage.jpg" alt="Some image" referrerpolicy="no-referrer"/>
12345678910111213当网站使用refresh字段进行跳转的时候,大多数浏览器不发送referer;从用户从一个HTTPS的网站点击链接到另一个HTTP的网站时,不发送referer;html5中,a标签的rel = “noreferrer”, 可以让浏览器不发送referer;使用Data URI scheme链接的,浏览器也不发送referer;使用Content Security Policy ...
JavaScript面试汇总
前言日常 js 面试题积累汇总。持续更新!
1.JavaScript 的基本数据类型
答案:Number、String、Boolean、Null、Undefined、Symbel(ES6 新增)、BigInt(ES10 新增)Object 是 JavaScript 中所有对象的父对象数据封装类对象:Object、Array、Boolean、Number、和String其他对象:Function、Arguments、Math、Date、RegExp、Errorjs 数据类型
2.JavaScript 的引用类型
答案:
Object
Function
Array
Date
RegExp
3.Javascript 基本数据类型和引用类型的特点
答案:1.基本数据类型:值不可变;数据存放在栈区。2.引用数据类型:值是可变的;同时保存在栈内存和堆内存。
4.检验 JavaScript 的数据类型的方法有哪些,以及使用它们的缺点
答案:
1.typeof:不能判断 null 和区分 Array/Date/RegExp
2.instanc ...