[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]的更多相关文章

  1. 这样leetcode简单题都更完了

    这样leetcode简单题都更完了,作为水题王的我开始要更新leetcode中等题和难题了,有些挖了很久的坑也将在在这个阶段一一揭晓,接下来的算法性更强,我就要开始分专题更新题目,而不是再以我的A题顺 ...

  2. leetcode简单题6

    今天的华师 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, fro ...

  3. leetcode.双指针.88合并两个有序数组-Java

    1. 具体题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别 ...

  4. 【LeetCode】双指针 two_pointers(共47题)

    [3]Longest Substring Without Repeating Characters [11]Container With Most Water [15]3Sum (2019年2月26日 ...

  5. 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 ...

  6. LeetCode简单算法之删除链表中的节点 #237

    闲来无事,刷刷力扣,以解心头之闷. 题目内容: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以 ...

  7. LeetCode简单题(三)

    题目一: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股 ...

  8. LeetCode简单题(二)

    题目一: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的 ...

  9. LeetCode简单题(一)

    题目一: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组 ...

  10. LeetCode简单题汇总

      1.两个数之和 给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index ...

随机推荐

  1. 【漏洞复现】蓝凌OA sysUiComponent 任意文件上传漏洞

    阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站.服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作.利用此文所提供的信息而造成的直接 ...

  2. RESTful风格openapi接口设计+openapi远程服务调用

    我们平常开发一般只使用GET.POST方法.而对于HTTP给出的PUT.DELETE等其他方法都没使用.以RESTful风格设计接口就能全部用上这些方法. 按照RESTful理查德森成熟度模型改造接口 ...

  3. Typora导出html图片转base64

    Typora 导出html图片转base64 Typora 中图片使用绝对路径 图片路径不要使用中文,否则可能会不成功 打包 jar ,jar放在到出 html 同级目录下 必须要有 jdk 环境 一 ...

  4. Java中双括号初始化是个什么操作

    最近在阅读Mybatis源码的时候,看到了一种原来很少见到的语法: public class RichType { ... private List richList = new ArrayList( ...

  5. 【分享】FFmpeg桌面神器,集多种功能于一身,超级好用,不用命令行!

    在媒体处理上,市面上有很多软件可以选择,在众多软件里面 FFmpeg 是比较独特的一款,直接选择 FFmpeg 硬核命令行工具的朋友相对较少,大多时候只是被集成在各样的软件里,如果单独拿出来使用,不少 ...

  6. CMake 进行多项目中dll的编译和链接

    前言(maybe废话) 最近正在学习cherno的游戏引擎教程,他使用的是vs进行构建的,后面换了premake.而我用的是vscode+cmake,所以在构建整个项目的时候踩了不少的坑,也找了很多资 ...

  7. GNU gprof分析C性能

    参考 gprof的简单使用-anthony1983-ChinaUnix博客 Top (GNU gprof) (sourceware.org) c - Enable and disable gprof ...

  8. .net6 .net core web api json 遇到 400 错误

    环境: .net6 webapi 服务端模型声明 public class TongYiMinPgPayReq { public string mch_no { get; set; } public ...

  9. 使用Wesky.Net.OpenTools包来快速实现嵌套型结构体数据转换功能

    今天遇到有人提到结构体和byte数组互转的问题,我就顺便拿来水一篇.这是一个冷门的问题,估计使用的人不多.既然有需求,应该就有使用场景,那就顺便整一波. 为了达到效果,结构体.复杂结构体嵌套等都能实现 ...

  10. 升级babel7后,直接引用element-ui中没有暴露出来的组件image-viewer.vue导致的打包错误

    问题 & 解决方案 升级babel7后,原先代码中像这样直接引用element-ui组件的地方,出现了报错 Module parse failed: Unexpected token (1:0 ...