leetcode简单(双指针):[88, 202, 345, 392, 455, 905, 922, 917, 925, 942]
[toc
88. 合并两个有序数组
var merge = function(nums1, m, nums2, n) {
let A1 = nums1.slice(0, m)
let A2 = nums2
// 追加哨兵
A1.push(Number.MAX_SAFE_INTEGER)
A2.push(Number.MAX_SAFE_INTEGER)
for (let k = 0, i = 0, j = 0; k < m + n; k++) {
// 循环不变式
// k: 下一个写入位置
// i: A1中获回写位置
// j: A2中回写位置
nums1[k] = A1[i] < A2[j] ? A1[i++] : A2[j++]
}
};
202. 快乐数
var isHappy = function(n) {
const squareSum = (n) => {
let sum = 0
while (n > 0) {
let digit = n % 10
sum += digit * digit
n = Math.floor(n / 10)
}
return sum
}
// 判断是否有循环可以使用快慢指针,表示链表中有环
let slow = n
let fast = squareSum(n)
while (slow != fast) {
slow = squareSum(slow)
fast = squareSum(squareSum(fast))
}
return slow === 1
};
345. 反转字符串中的元音字母
var reverseVowels = function(s) {
let set = new Set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']);
let arr = s.split('')
let i = 0,
j = s.length - 1
while (i < j) {
if (set.has(arr[i])) {
if (set.has(arr[j])) {
[arr[i], arr[j]] = [arr[j], arr[i]]
i++
}
j--
} else {
i++
}
}
return arr.join('')
};
392. 判断子序列
var isSubsequence = function(s, t) {
if (s == '') return true
let i = 0;
let j = 0
while (j < t.length) {
if (s[i] === t[j]) {
i++
}
if (i == s.length) {
return true
}
j++
}
return false
};
455. 分发饼干
var findContentChildren = function(g, s) {
let ng = g.sort((a, b) => a - b)
let ns = s.sort((a, b) => a - b)
let [i, j] = [0, 0]
while (i < ng.length && j < ns.length) {
if (ng[i] <= ns[j]) {
i++
}
j++ // 饼干被消费或不满足,需递增
}
return i
};
905. 按奇偶排序数组
var sortArrayByParity = function(nums) {
let i = 0;
let j = nums.length - 1
while (i <= j) {
if (nums[j] % 2 == 0 && nums[i] % 2 != 0) { // 偶前奇后
[nums[i], nums[j]] = [nums[j], nums[i]]
i++
j--
} else if (nums[j] % 2 == 0) {
i++
} else if (nums[i] % 2 != 0) {
j--
} else {
i++
j--
}
}
return nums
};
922. 按奇偶排序数组 II
var sortArrayByParityII = function(nums) {
let j = 1;
let o = 0
let res = []
nums.forEach(n => {
if (n % 2 == 0) {
res[o] = n
o += 2
} else {
res[j] = n
j += 2
}
})
return res
};
917. 仅仅反转字母
var reverseOnlyLetters = function(s) {
let reg = /[a-zA-Z]/
let strArr = s.split('')
let i = 0
let j = strArr.length - 1
while (i < j) {
if (reg.test(strArr[i]) && reg.test(strArr[j])) {
[strArr[i], strArr[j]] = [strArr[j], strArr[i]]
i++
j--
} else if (reg.test(strArr[i])) {
j--
} else if (reg.test(strArr[j])) {
i++
} else {
i++
j--
}
console.log(strArr);
}
return strArr.join('')
};
925. 长按键入
var isLongPressedName = function(name, typed) {
let i = 0
let j = 0
while (j < typed.length) {
if (name[i] == typed[j]) {
i++
}
if (name[i] != typed[j] && name[i - 1] != typed[j]) {
return false
}
if (i == name.length) {
let flag = typed.slice(j).split(name[name.length - 1]).join('')
if (flag != '') {
return false
}
return true
}
j++
}
return false
};
942. 增减字符串匹配
var diStringMatch = function(s) {
let m = 0
let n = s.length
let res = []
for (let i = 0; i <= s.length; i++) {
if (s[i] == 'I') {
res.push(m)
m++
} else {
res.push(n)
n--
}
}
return res
};
leetcode简单(双指针):[88, 202, 345, 392, 455, 905, 922, 917, 925, 942]的更多相关文章
- 这样leetcode简单题都更完了
这样leetcode简单题都更完了,作为水题王的我开始要更新leetcode中等题和难题了,有些挖了很久的坑也将在在这个阶段一一揭晓,接下来的算法性更强,我就要开始分专题更新题目,而不是再以我的A题顺 ...
- leetcode简单题6
今天的华师 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, fro ...
- leetcode.双指针.88合并两个有序数组-Java
1. 具体题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别 ...
- 【LeetCode】双指针 two_pointers(共47题)
[3]Longest Substring Without Repeating Characters [11]Container With Most Water [15]3Sum (2019年2月26日 ...
- LeetCode—66、88、118、119、121 Array(Easy)
66. Plus One Given a non-negative integer represented as a non-empty array of digits, plus one to th ...
- LeetCode简单算法之删除链表中的节点 #237
闲来无事,刷刷力扣,以解心头之闷. 题目内容: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以 ...
- LeetCode简单题(三)
题目一: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股 ...
- LeetCode简单题(二)
题目一: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的 ...
- LeetCode简单题(一)
题目一: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组 ...
- LeetCode简单题汇总
1.两个数之和 给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index ...
随机推荐
- 推荐2款开源、美观的WinForm UI控件库
前言 今天大姚给大家分享2款开源.美观的WinForm UI控件库,希望可以帮助到有需要的同学. WinForm介绍 WinForm是一个传统的桌面应用程序框架,它基于 Windows 操作系统的原生 ...
- ThreadLocal原理详解——终于弄明白了ThreadLocal
目录 概述 API介绍 ThreadLocal的理解 ThreadLocal的原理分析 总结 概述 在java学习生涯中可能很多人都会听到ThreadLocal变量,从字面上理解ThreadLocal ...
- Django——基于Ajax的登录功能实现
urlpatterns = [ path('admin/', admin.site.urls), path('login/',views.login), path('get_validCode_img ...
- Uni-app极速入门(二) - 登录demo
需求 背景 1.进入小程序,默认页面判断用户是否已经登录,已经登录则进入首页,没有登录则进入登录页面 2.首页为tabbar,包括首页和设置页,设置页可以退出登录,回到登录页面 页面流转 graph ...
- 前端项目报EISDIR: illegal operation on a directory, read这个错误
背景: 我用webstorm开发前端页面时,项目用Vue3来开发,出现如下报错. 原因: 这个报错是由于代码中引入的一些组件或者模块路径不正确导致的,在vue2中,引入组件是下面这样写的: impor ...
- 【Effective C++】设计与声明——成员变量和成员函数
将成员变量声明为private 为什么成员变量不该是public? (1)从语法一致性来说,如果成员变量不是public,就需要通过成员函数访问成员变量.public接口内的每样东西都是函数的话,客户 ...
- IDEA的安装、激活(到25年2月)&汉化
1,在官网下载IDEA软件,官网 2,下载之后,双击安装包,然后一直点击next即可. (中间可以按照自己的要求设置安装目录) 3,快捷方式和java打钩 4,点击install即可进行安装,时间有一 ...
- C#.NET 使用Windows证书库中的证书
public static X509Certificate2 GetCertificate(string commonName, StoreName storeName) { X509Certific ...
- 基于阿里Anolis OS8.8 的Hadoop大数据平台建设
基于阿里Anolis OS8.8 的Hadoop大数据平台建设 VNC安装与使用 0 Anolis OS基本操作 0.1 Anolis OS用户与组管理 0.2 系统进程管理 0.3 文件操作命令及权 ...
- mysql case when使用
## mysql case when使用 SELECT order_no,case is_test when 0 then '否'when 1 then '是'end as '是否测试' from ` ...