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. java学习之旅(day.14)

    可变字符串 StringBuffer:可变长字符串,运行效率慢,线程安全 StringBuilder:可变长字符串,运行效率快,线程不安全 package com.zhang.lei; //Strin ...

  2. ef.core 事务不回滚的我遇到的一种情况分享

    比如有几个Repository:_storeRep,_inventoryRep,_storeItemRep.基类封装有BeginTransaction():   using(var trans=_st ...

  3. Must use PackageReference 解决办法

    Must use PackageReference 这是因为 .net framework的项目 在nuget时,引用到了 .net core 下的包. 解决办法,把之前引用的相关包全部在nuget上 ...

  4. js 中你不知道的各种循环测速

    在前端 js 中,有着多种数组循环的方式: for 循环: while 和 do-while 循环: forEach.map.reduce.filter 循环: for-of 循环: for-in 循 ...

  5. NOIP模拟96

    T1 树上排列 解题思路 是一个一眼切的题目... 看到题目第一眼就是 Deepinc 学长讲的可重集,无序 Hash . 直接套上一颗线段树再加上树剖, \(nlog^2n\) 直接过,好像也可以树 ...

  6. 【jetson nano】烧录系统

    烧录固件 烧录固件是为了让板子用tf卡作为系统启动(非板载启动),一般来说只需要刷写一遍. 安装vm,找到虚拟机镜像,解压part01就能获取镜像. 打开vm,打开此虚拟机镜像,账号clb,密码为12 ...

  7. Linux设备驱动--轮询操作

    注:本文是<Linux设备驱动开发详解:基于最新的Linux 4.0内核 by 宋宝华 >一书学习的笔记,大部分内容为书籍中的内容. 书籍可直接在微信读书中查看:Linux设备驱动开发详解 ...

  8. 【Java面试题-基础知识03】Java线程连环问

    1.Java中的线程是什么? 在Java中,线程是程序执行流的最小单元.每个Java程序都至少有一个主线程,也称为主执行线程,它是程序开始执行时自动创建的.除了主线程外,程序员还可以创建额外的线程来执 ...

  9. linux系统下,安装redis教程,以redis 6.2.6为例

    1.下载安装包 手动下载:进入官网选择下载版本https://download.redis.io/releases/ 命令下载: cd /usr/local wget http://download. ...

  10. EF 字段 4位小数 四位小数

    默认情况下只能保存2位小数.如果有字段需要4位小数则: 在OnModelCreating方法中添加一行: modelBuilder.Entity<SissMerchantBillRate> ...