1. 两数之和
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
let nums = [3,2,4]
let target = 6
const twosum = function(nums,target){
for(let item = 0;item< nums.length; item++ ){
for(let item1 = 0;item1< nums.length; item1++ ){
if(item !== item1)
if(nums[item] + nums[item1] === target){
return [item,item1]
}
}
}
}
let nums = [3,2,4]
let target = 6
const twosum = function(nums,target){
let map = new Map()
for(let item = 0;item< nums.length; item++ ){
if(map.has(target-nums[item])){
return [map.get(target-nums[item]),item]
}
else{
map.set(nums[item],item)
}
}
}
2. 有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()" 输出:true
示例 2:
输入:s = "()[]{}" 输出:true
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
if(s.length % 2 === 1){
return false
}
const pair = new Map([
[')','('],
[']','['],
['}','{']
])
const stk = []
for(let a of s){
if(pair.has(a)){
if(!stk.length || stk[stk.length -1] !== pair.get(a)){
return false
}
stk.pop() //出栈
}
else{
stk.push(a)//入栈
}
}
return !stk.length
};
3.移除元素
给你一个数组 nums
和一个值 val
,你需要 原地 移除所有数值等于 val
的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1)
额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
let nums = [3,2,4,3]
let val = 3
const twosum = function(nums,val){
//定义一个起始下标 结尾下标
let start = 0;
let end = nums.length -1;
while(start <= end){
if(nums[start] === val){
const temp = nums[start]
nums[start] = nums[end]
nums[end] = temp
end --
}else{
start ++
}
}
return end + 1
}
4.删除排序数组中的重复项
给你一个 升序排列 的数组 nums
,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums
中唯一元素的个数。
var removeDuplicates = function(nums) {
for(let a=0;a<nums.length;a++){
for(let b=0;b<nums.length;b++){
if(a!=b){
if(nums[a]===nums[b]){
nums.splice(a,1)
b--
}
}
}
}
return nums.length
};
const removeDuplicates = function(nums) {
for(let a = 0; a < nums.length; a++){
if(nums[a] === nums[a+1]){
nums.splice(a,1)
a--
}
}
return nums.length
};