leetcode简单(数组,字符串,链表):[66, 67, 70, 83, 121, 141, 160, 169, ,206, 338]
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]的更多相关文章
- redis底层数据结构--简单动态字符串 链表 字典 跳跃表 整数集合 压缩列表
1.动态字符串 redis中使用c语言的字符床存储字面量,默认字符串存储采用自己构建的简单动态字符串SDS(symple dynamic string) redis包含字符串的键值对都是用SDS实现的 ...
- 【redis】redis底层数据结构原理--简单动态字符串 链表 字典 跳跃表 整数集合 压缩列表等
redis有五种数据类型string.list.hash.set.zset(字符串.哈希.列表.集合.有序集合)并且自实现了简单动态字符串.双端链表.字典.压缩列表.整数集合.跳跃表等数据结构.red ...
- LeetCode 简单 -旋转字符串(796)
给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能变成B ...
- redis 笔记01 简单动态字符串、链表、字典、跳跃表、整数集合、压缩列表
文中内容摘自<redis设计与实现> 简单动态字符串 1. Redis只会使用C字符串作为字面量,在大多数情况下,Redis使用SDS(Simple Dynamic String,简单动态 ...
- [Java]字符串数组 与 字符串链表 之间的相互转化
代码: package com.hy; import java.util.Arrays; import java.util.Collections; import java.util.List; pu ...
- C#LeetCode刷题-字符串
字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.6% 中等 5 最长回文子串 22.4% 中等 6 Z字形变换 35.8% 中等 8 字符串转整数 (atoi) ...
- Redis 数据结构-简单动态字符串
Redis 数据结构-简单动态字符串 无边落木萧萧下,不尽长江滚滚来. 1.简介 Redis 之所以快主要得益于它的数据结构.操作内存数据库.单线程和多路 I/O 复用模型,进一步窥探下它常见的五种基 ...
- 图解Redis之数据结构篇——简单动态字符串SDS
图解Redis之数据结构篇--简单动态字符串SDS 前言 相信用过Redis的人都知道,Redis提供了一个逻辑上的对象系统构建了一个键值对数据库以供客户端用户使用.这个对象系统包括字符串对象 ...
- Redis底层探秘(一):简单动态字符串(SDS)
redis是我们使用非常多的一种缓存技术,他的性能极高,读的速度是110000次/s,写的速度是81000次/s.这么高的性能背后,到底是怎么样的实现在支撑,这个系列的文章,我们一起去看看. redi ...
- Collection集合重难点梳理,增强for注意事项和三种遍历的应用场景,栈和队列特点,数组和链表特点,ArrayList源码解析, LinkedList-源码解析
重难点梳理 使用到的新单词: 1.collection[kəˈlekʃn] 聚集 2.empty[ˈempti] 空的 3.clear[klɪə(r)] 清除 4.iterator 迭代器 学习目标: ...
随机推荐
- 倒计时7天!AIRIOT新品发布会,6月6日北京见。
随着物联网.大数据.AI技术的成熟和演进,智能物联网技术正在加速.深入渗透至各行业应用. AIRIOT物联网平台作为赋能数字经济发展和产业转型的数字基座,由航天科技控股集团股份有限公司(股票代码:00 ...
- 更智能!AIRIOT加速煤炭行业节能减排升级
"双碳政策"下,各个行业都在践行节能减排行动,依靠数字化.智能化手段开展节能减排工作. 煤炭行业是能源消耗大户,煤炭选洗是煤炭行业节能减排的重要环节之一,加强煤炭清洁高效利用工作, ...
- 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2022):基于异构图GCN和GAT的DTI预测
(2022.4.16)Briefings-DTI-HETA:基于异构图GCN和GAT的DTI预测 目录 (2022.4.16)Briefings-DTI-HETA:基于异构图GCN和GAT的DTI预测 ...
- ControlNet
ControlNets 允许您选择图像来引导 AI,使其更紧密地跟随您的控制图像.您可以选择一个过滤器来预处理图像,以及已知(或自定义)控制网络模型之一. 虽然这听起来与图像到图像相似,但 Contr ...
- Asp-Net-Core开发笔记:给SwaggerUI加上登录保护功能
前言 在 SwaggerUI 中加入登录验证,是我很早前就做过的,不过之前的做法总感觉有点硬编码,最近 .Net8 增加了一个新特性:调用 MapSwagger().RequireAuthorizat ...
- SqlServer 死锁查询
use master go create procedure sp_who_lock as begin declare @spid int,@bl int, @intTransactionCountO ...
- Android 13 - Media框架(3)- MediaPlayer生命周期
关注公众号免费阅读全文,进入音视频开发技术分享群! 上一节了解了MediaPlayer api的使用,这一节就我们将会了解MediaPlayer的生命周期与api使用细节. 1.MediaPlayer ...
- java中以字符分隔的字符串与字符串数组的相互转换
1.字符串数组拼接成一个以指定字符(包括空字符)分隔的字符串--String.join(),JDK8的新特性 String[] strArray = {"aaa","bb ...
- kettle从入门到精通 第十七课 kettle Transformation executor
Transformation executor步骤是一个流程控件,和映射控件类似却又不一样. 1.子转换需要配合使用从结果获取记录和复制记录到结果两个步骤,而子映射需要配合映射输入规范和映射输出规范使 ...
- linux系统下,配置多个tomcat服务
安装jdk时配置的环境变量 export JAVA_HOME=/usr/local/jdk1.8.0_311 export JRE_HOME=$JAVA_HOME/jre export PATH=$P ...