66. 加一

var plusOne = function(digits) {
// 1. 从最后一个值进行开始遍历
// 2. 只要是%10===0,就直接继续遍历,否则返回值即可
// 3. 最后,遍历完还没给出结果的,那肯定是 10,这种所以要往前加1
for (let i = digits.length - 1; i >= 0; i--) {
digits[i] = digits[i] + 1
digits[i] = digits[i] % 10
if (digits[i] !== 0) {
return digits
}
}
digits.unshift(1)
return digits
};

67. 二进制求和

var addBinary = function(a, b) {
var len = Math.max(a.length, b.length)
a = a.padStart(len, 0).split('')
b = b.padStart(len, 0).split('') var result = []
var isTen = 0
for (let i = len - 1; i >= 0; i--) {
var tmpA = parseInt(a[i])
var tmpB = parseInt(b[i])
if (tmpA + tmpB + isTen == 3) { // 1+1+1
result.unshift(1);
isTen = 1
} else if (tmpA + tmpB + isTen == 2) { // 1+1+0
result.unshift(0);
isTen = 1
} else if (tmpA + tmpB + isTen == 1) { // 1+0+0
result.unshift(1);
isTen = 0
} else { // 0+0+0
result.unshift(0);
isTen = 0
}
}
if (isTen == 1) result.unshift(1);
return result.join('')
};

70. 爬楼梯

var climbStairs = function(n) {
const path = []
// path[n] = path[n-1] + path[n-2] // 最终到达顶的总数 = 差一步 + 差两步的 和 // 已知条件
path[1] = 1
path[2] = 2
for (i = 3; i <= n; i++) {
path[i] = path[i - 1] + path[i - 2]
}
return path[n]
};

83. 删除排序链表中的重复元素

var deleteDuplicates = function(head) {
let curr = head
while (curr !== null && curr.next !== null) {
if (curr.val == curr.next.val) {
curr.next = curr.next.next
} else {
curr = curr.next
}
}
return head };

121. 买卖股票的最佳时机

var maxProfit = function(prices) {
var minPrice = prices[0]
var maxProfit = 0
for (let i = 0; i < prices.length; i++) {
minPrice = prices[i] < minPrice ? prices[i] : minPrice
maxProfit = prices[i] - minPrice < maxProfit ? maxProfit : prices[i] - minPrice }
return maxProfit
};

141. 环形链表

var hasCycle = function(head) {
// 使用快慢指针
var fast = head;
while (fast && fast.next) {
head = head.next
fast = fast.next.next
if (head === fast) return true
}
return false
};

160. 相交链表

var getIntersectionNode = function(headA, headB) {
var n1 = headA
var n2 = headB while (n1 !== n2) {
if (n1 === null) {
n1 = headB
} else {
n1 = n1.next
}
if (n2 === null) {
n2 = headA
} else {
n2 = n2.next
}
}
return n1
};

169. 多数元素

var majorityElement = function(nums) {
var keyMap = {}
for (let i = 0; i < nums.length; i++) {
if (!keyMap[nums[i]]) {
keyMap[nums[i]] = 0
}
keyMap[nums[i]]++
}
var res = []
for (const key in keyMap) {
if (keyMap[key] > (nums.length / 2)) {
res.push(key)
}
}
return res
}

206. 反转链表

var reverseList = function(head) {
var prev = null
var curr = head
var next = head
while (curr !== null) {
// next = curr.next // 由于是单项链表,所以需要占位
// curr.next = prev // 实现反转
// prev = curr
// curr = next
// 上述四步可简写为:
[curr.next, prev, curr] = [prev, curr, curr.next]
}
return prev
};

338. 比特位计数

var countBits = function(n) {
var res = []
for (let i = 0; i <= n; i++) {
var bin = i.toString(2)
var tmp = bin.replace(/1/g, '').length
res.push(bin.length - tmp)
}
return res
};

leetcode简单(数组,字符串,链表):[66, 67, 70, 83, 121, 141, 160, 169, ,206, 338]的更多相关文章

  1. redis底层数据结构--简单动态字符串 链表 字典 跳跃表 整数集合 压缩列表

    1.动态字符串 redis中使用c语言的字符床存储字面量,默认字符串存储采用自己构建的简单动态字符串SDS(symple dynamic string) redis包含字符串的键值对都是用SDS实现的 ...

  2. 【redis】redis底层数据结构原理--简单动态字符串 链表 字典 跳跃表 整数集合 压缩列表等

    redis有五种数据类型string.list.hash.set.zset(字符串.哈希.列表.集合.有序集合)并且自实现了简单动态字符串.双端链表.字典.压缩列表.整数集合.跳跃表等数据结构.red ...

  3. LeetCode 简单 -旋转字符串(796)

    给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能变成B ...

  4. redis 笔记01 简单动态字符串、链表、字典、跳跃表、整数集合、压缩列表

    文中内容摘自<redis设计与实现> 简单动态字符串 1. Redis只会使用C字符串作为字面量,在大多数情况下,Redis使用SDS(Simple Dynamic String,简单动态 ...

  5. [Java]字符串数组 与 字符串链表 之间的相互转化

    代码: package com.hy; import java.util.Arrays; import java.util.Collections; import java.util.List; pu ...

  6. C#LeetCode刷题-字符串

    字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串   24.6% 中等 5 最长回文子串   22.4% 中等 6 Z字形变换   35.8% 中等 8 字符串转整数 (atoi)   ...

  7. Redis 数据结构-简单动态字符串

    Redis 数据结构-简单动态字符串 无边落木萧萧下,不尽长江滚滚来. 1.简介 Redis 之所以快主要得益于它的数据结构.操作内存数据库.单线程和多路 I/O 复用模型,进一步窥探下它常见的五种基 ...

  8. 图解Redis之数据结构篇——简单动态字符串SDS

    图解Redis之数据结构篇--简单动态字符串SDS 前言     相信用过Redis的人都知道,Redis提供了一个逻辑上的对象系统构建了一个键值对数据库以供客户端用户使用.这个对象系统包括字符串对象 ...

  9. Redis底层探秘(一):简单动态字符串(SDS)

    redis是我们使用非常多的一种缓存技术,他的性能极高,读的速度是110000次/s,写的速度是81000次/s.这么高的性能背后,到底是怎么样的实现在支撑,这个系列的文章,我们一起去看看. redi ...

  10. Collection集合重难点梳理,增强for注意事项和三种遍历的应用场景,栈和队列特点,数组和链表特点,ArrayList源码解析, LinkedList-源码解析

    重难点梳理 使用到的新单词: 1.collection[kəˈlekʃn] 聚集 2.empty[ˈempti] 空的 3.clear[klɪə(r)] 清除 4.iterator 迭代器 学习目标: ...

随机推荐

  1. xlwings模块详解

    中文文档:https://www.kancloud.cn/gnefnuy/xlwings-docs/1127454 import xlwings#查找包路径print(xlwings.__path__ ...

  2. C# Datagridview combox列 初始化颜色

    DataGridView 初始化完成后,在combox里显示颜色,如这样: DataGridView 注册 cellPainting事件: private void m_dataGridView_Ce ...

  3. Windows pyinstaller wxPython pyecharts无法正常显示问题

    Windows pyinstaller wxPython pyecharts无法正常显示问题 最近遇到一个pyinstaller打包wxPython pyecharts无法显示的问题,pyechart ...

  4. 一款功能强大的Python工具,一键打包神器,一次编写、多平台运行!

    1.项目介绍 Briefcase是一个功能强大的工具,主要用于将Python项目转化为多种平台的独立本地应用.它支持多种安装格式,使得Python项目能够轻松打包并部署到不同的操作系统和设备上,如ma ...

  5. 使用Docker快速安装Redis

    1.使用docker命令下一个redis的镜像 docker pull redis 2.创建 redis 的 data 目录和 conf 目录 1. cd /home/fengsir/redis 2. ...

  6. Google,Baidu,Bing三大搜素引擎图片爬虫

    Google,Baidu,Bing三大搜素引擎图片爬虫 参考https://mp.weixin.qq.com/s/75QDjRTDCKzuM68L4fg5Lg 这个爬虫由ID为sczhengyabin ...

  7. 005. gitlab安装

    1. gitlab介绍 官方网站: www.gitlab.com gitlab是一款使用ruby编写的代码版本管理系统,他可以通过web界面来管理代码. 2. gitlab安装 官方安装文档: htt ...

  8. 8.4考试总结(NOIP模拟30)[毛一琛·毛二琛·毛三琛]

    最有名的莫过于想死一次吗. 前言 至今都不知道题目是个啥... T1 毛一琛 解题思路 \(\mathcal{Meet\;In\;The\;Middle}\) 其实就是一个爆搜... 把整个区间分为两 ...

  9. C++笔记(2)拷贝构造函数

    拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象. 如果在类中没有定义拷贝构造函数,编译器会自行定义一个.如果类带有指针变量,并有动态内存分配,则它必 ...

  10. mvn 打包报错:no compiler is provided in this environment

    最近公司换了电脑,系统也从 win7 升级到 win11,开发环境都重新安装了一遍,然后在 idea 用mvn 执行打包命令 mvn clean package 报错: no compiler is ...