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. PageOffice在线打开编辑Word文件获取指定区域的数据并且保存整篇文件

    一.首先在word文件中给需要在后台获取数据的区域设置以PO_开头的书签. 二.通过pageoffice在线打开文件并编辑保存.有两种打开文件的模式 1.普通编辑模式(docNormalEdit) 普 ...

  2. ssl协议存在弱加密算法修复,禁用低版本的TLS

    验证用网站:https://www.ssleye.com/ssltool/cipher_suites.html https://www.site24x7.com/zhcn/tools/tls-chec ...

  3. 【漏洞复现】用友NC-Cloud PMCloudDriveProjectStateServlet接口存在JNDI注入漏洞

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

  4. 提升WordPress网站加载速度的8个小技巧

    提升WordPress网站加载速度是至关重要的,它不仅可以提高用户体验,还有助于SEO排名.以下是提升WordPress网站加载速度的8个小技巧,希望能帮助到大家. 优化图片: 使用适当大小和格式的图 ...

  5. npm install current-device js 端判断程序运行的设备

    https://github.com/matthewhudson/current-device CURRENT-DEVICE        This module makes it easy to w ...

  6. sqlerver 报错5120 无法为该请求检索数据 系统找不到指定路径

    背景: 数据库mdf文件所在盘符F盘被删除了,也就是文件不存在了,sqlserver管理器打开就报错5120,并且正常路径的数据库也不显示出来. 要让正常的数据库显示出来,就需要删除掉已经没有的数据库 ...

  7. CSS——阴影

    <!DOCTYPE html> <html> <head> <style> p.one { text-shadow: 3px 5px 5px #FF00 ...

  8. .NET桌面程序混合开发之二:在原生WinFrom程序中使用WebView2

    本文将介绍如何在WinForms中嵌入WebView2,并讲到WebView2的主要特征.点击了解更多WebView2的API. 1. 准备 Visual Studio 2017 及以上版本 WebV ...

  9. js 检测文本是否溢出

    自定义指令的方式 手写实现 /** * 检测文本是否溢出 * 参考 https://github.com/ElemeFE/element/blob/dev/packages/table/src/tab ...

  10. AtCoder Beginner Contest 357

    ABC357总结 AtCoder Beginner Contest 357 A - Sanitize Hands 翻译 有一瓶消毒剂,正好可以消毒 \(M\) 双手. \(N\) 名外星人陆续前来消毒 ...