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 ...
随机推荐
- java学习之旅(day.12)
异常机制(Exception) 异常指程序运行中出现的不期而至的各种状况 异常分类: 检查性异常:用户输入错误引起的异常 运行时异常:写的时候未报错,但一运行就会报错, 错误(error):错误不是异 ...
- kubernetes 之dashboard
部署 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recomme ...
- Vue cli使用Element UI
当前的测试环境如下: ---- 新版的@vue/cli ---- Vue2.x版本 第一步:安装Element UI npm i element-ui -S 第二步:引入Element UI 在mai ...
- Windows Server系统 PaddleOCR失败解决方案
因PaddleOCR引用了Opencv,在windows server 上 使用opencv出现 DLL load failed错误,发现缺失部分dll:MFPlat.dll.MF.dll.MFRea ...
- .NET开源、跨平台、使用简单的面部识别库
前言 今天给大家分享一个.NET开源(MIT License).免费.跨平台(适用于 Windows.MacOS 和 Linux ).使用简单的面部识别库:FaceRecognitionDotNet. ...
- Centos Stream 10 测试版下载:未来的RHEL10&Rocky Linux 10
简介 最近发现Centos最放出了Stream 10 测试版本,应该是基于Fedora 40构建的.未来红帽会基于此版本构建RHEL 10. 内核版本:6.9.0 Python版本:3.12.2 RH ...
- codemirror-editor-vue3 编辑器只要换行保存就会有小红点
先看示例 找了篇博客写的贼详细 https://blog.csdn.net/xujingyiss/article/details/118992763 只要设置这二个 let conten ...
- REACT 前端界面提交
在react项目中安装代理中间件 setupProxy.js文件 const { createProxyMiddleware: proxy } = require('http-proxy-middle ...
- kettle从入门到精通 第三十二课 mysql 数据连接集群/分区配置
1.这里的集群实际上是数据分区或者分片的概念,如中国全国的学生,应该不会都存在一张表里面,有可能每个省市一个表进行存储. 2.集群(分区),如下图所示 设置在"集群"标签,勾选&q ...
- Vue学习:11.了解生命周期
Vue.js框架为组件设计了一套完整的生命周期,涵盖了从创建到销毁的全过程.这些生命周期钩子函数(lifecycle hooks)允许开发者在特定的阶段执行自定义逻辑,以便更好地管理组件的状态和与其交 ...