本文主要是介绍一个月速刷leetcodeHOT100 day02,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天的三道题
移动零
在双指针分组里的简单题
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
输入: nums = [0]
输出: [0]
//我的做法是直接删0,后面补0
function moveZeroes(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--}}}//排序做法
//
function moveZeroes(nums){
let j = 0;
for (let i= 0; i< nums.length; i++) {
if(arr[i] !== 0){
let temp = nums[j]
nums[j] = nums[i]
nums[i] = temp
j++
}
}
}
有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
栈的简单题
var isValid = function (s) {const map = {')': '(','}': '{',']': '['};const stack = [];for (let c of s) {//如果当前字符 c 是右括号(即 map[c] 有值)if (map[c]) { const opposite = stack.pop();if (map[c] !== opposite) return false;} else {stack.push(c);}}return stack.length === 0;
};
字母异位词分组
哈希表 中等难度
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:[[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [""]
输出: [[“”]]
示例 3:
输入: strs = ["a"]
输出: [[“a”]]
var groupAnagrams = function(strs) {let hash = new Map()for(let i = 0; i < strs.length; i++) {// 重点就是 通过排序将字母相同的归为一类 let str = strs[i].split('').sort().join()if(hash.has(str)) {//let temp = hash.get(str)temp.push(strs[i])hash.set(str,temp)} else {// 将strs[i]存为数组 这样遇到相同字母好增加hash.set(str, [strs[i]])}}return [...hash.values()]
};
这篇关于一个月速刷leetcodeHOT100 day02的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!