【剑指Offer】简单部分每日五题 - Day 1
今天开始更新leetcode上《剑指Offer》的题解,先从简单难度开始。预计按下列顺序更新:
- 简单难度:每日5题
- 中等难度:每日3题
- 困难难度:每日1题
17 - 打印从1到最大的n位数
要求:比如打印三位数,就从1打印到999。以此类推。
题解:数据范围很小不怕越界,暴力从\(1\)打到\(10^n-1\)即可。
/**
* @param {number} n
* @return {number[]}
*/
// 10^n - 1
var printNumbers = function(n) {
let r = []
for (let i = 1; i < Math.pow(10, n); i++) {
r.push(i)
}
return r
};
22 - 链表中倒数第k个节点
要求:输出该链表中倒数第k个节点。(最后一个节点称为倒数第1个)
题解:很容易想到快慢指针。快指针先走k步,然后快慢指针一起走。快指针到尾部时,慢指针即指向结果。
/**
* @param {ListNode} head
* @param {number} k
* @return {ListNode}
*/
var getKthFromEnd = function(head, k) {
let fast = head, slow = head
for (let i = 0; i < k - 1; i++) {
fast = fast.next
}
while (fast.next) {
fast = fast.next
slow = slow.next
}
return slow
};
27 - 二叉树的镜像
要求:输入二叉树,输出它的镜像(每个结点左右子树互换)。
题解:对每个结点都交换左右子树,不难想到递归处理(自下而上)。
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var mirrorTree = function(root) {
if (root == null) { return null }
let backup = root.left
root.left = root.right
root.right = backup
mirrorTree(root.left)
mirrorTree(root.right)
return root
};
55-I - 二叉树的深度
要求:输入二叉树,输出深度。
题解:递归向深处探索。递归函数附加一个参数记录当前深度。
/**
* @param {TreeNode} root
* @return {number}
*/
var maxDepth = function(root) {
if (root == null) { return 0 }
let res = 0
let deepWalk = function(root, depth) {
if (root.left) { deepWalk(root.left, depth + 1) }
if (root.right) { deepWalk(root.right, depth + 1) }
res = depth > res ? depth : res
}
deepWalk(root, 1)
return res
};
58-II - 左旋转字符串
要求:左旋转指将字符串头k个字符顺序移动到末尾。
题解:字符串切片后拼接、字符串翻倍后截取都可以完成。这里用数学规律“假装”字符串翻倍处理之。
不妨举例,可清楚发现规律:
下标: 01 23456 7 k=2
字符串:abcde len=5
结果: ab|cdeab|cde
分析: 5->0 6->1 ---> mod 5
/**
* @param {string} s
* @param {number} n
* @return {string}
*/
var reverseLeftWords = function(s, n) {
let len = s.length, res = ''
for (let i = n; i < len + n; i++) {
res += s.charAt(i % len)
}
return res
};
【剑指Offer】简单部分每日五题 - Day 1的更多相关文章
- 《剑指offer》第二十五题(合并两个排序的链表)
// 面试题25:合并两个排序的链表 // 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按 // 照递增排序的.例如输入图3.11中的链表1和链表2,则合并之后的升序链表如链 ...
- 《剑指offer》第十五题(二进制中1的个数)
// 面试题:二进制中1的个数 // 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如 // 把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. #inclu ...
- 剑指Offer(二十五):复杂链表的复制
剑指Offer(二十五):复杂链表的复制 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/bai ...
- 剑指Offer(三十五):数组中的逆序对
剑指Offer(三十五):数组中的逆序对 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/bai ...
- 剑指offer——python【第54题】字符流中第一个不重复的字符
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...
- 剑指offer——python【第60题】把二叉树打印成多行
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行.#类似于二维列表[[1,2],[4,5]] 解题思路 其实这倒题和其他类似的题有所区别,这里是分层打印,把每层的节点值放在同一 ...
- 剑指offer——python【第30题】连续子数组的最大和
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...
- 剑指offer——python【第28题】数组 中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- 剑指offer——python【第43题】左旋转字符串
题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...
随机推荐
- [LC] 103. Binary Tree Zigzag Level Order Traversal
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
- centos xshell wireshark
centos安装wireshark yum install wireshark yum install wireshark-gnome 本地windows安装Xming Xming X Server ...
- 系统学习javaweb重点难点1--如何区分<input/>框里的三种常用属性:type属性 name属性 和 value属性
感想:这是我系统学习javaweb的时候感觉这个是一个初学者十分容易搞混的点 学习笔记: 首先,是type属性. 表单输入项标签之一,用户可以在该标签上通过填写和选择进行数据输入. type属性设置该 ...
- nonparametric method|One-Mean t-Interval Procedure|
8.4 Confidence Intervals for One Population Mean When σ Is Unknown 原先是 standardized version of x bar ...
- 谷歌眼镜、亚马逊音箱,5G时代隐私或将面临更大颠覆
别看现在的智能手机.平板电脑.可穿戴设备.智能家居等那么火爆,但离开网络它们其实什么也不是.当然,智能终端设备的迭进也是与网络制式不断向前演变相辅相成的,二者算是互相成就.不过也由此衍生出很多问题,尤 ...
- z-index优先级小结
z-index是深度属性,设置元素在z轴上面的堆叠顺序. 强调:z-index必须和定位元素position:absollute|relative|fixed一起使用,否则无效 1.z-index属性 ...
- Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization.FAILED
1.service network stop 2./etc/sysconfig/network-scripts目录下,删除想要删除的网卡配置,我要删除eth1,所以rm -rf ifcfg-eth1, ...
- SQL语句之查询(SELECT)
目录 SQL语句之查询(SELECT) 简单查询 限定查询 模糊查询 排序查询 多表查询 SQL语句之查询(SELECT) SQL是用于访问和处理数据库的标准计算机语言: 中文:结构化查询语言:英文全 ...
- HDU-6312-Game
题意: 一个集合里有1到n,两个人轮流从中取数,取出一个数的同时这个数的因子也被取走.取走最后一个数者为胜.判断是否先手必胜. 思路: 一道挺有意思的博弈题.一开始在纸上列出了n为1到6的情况,发现都 ...
- jstl之核心标签
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...