剑指offer
firepation
这个作者很懒,什么都没留下…
展开
-
剑指offer之删除链表节点
1. 题目 在 O(1) 时间内删除链表节点。 给定单向链表节点的头指针和一个节点指针(使用 java 实现,因此我的代码中头结点作为一个变量定义在类中),定义一个函数在 O(1) 时间内删除该节点。 2. 思路 在单向链表中删除节点按照常规的思路来说就是从头开始遍历,查找到需要删除的节点,并在链表中删除该节点。但是这种做法的时间复杂度为 O(N),并不符合题目要求,因此需要考虑一下其...原创 2018-08-06 11:18:23 · 389 阅读 · 0 评论 -
剑指offer之字符串是否为数值
1. 题目 这是《剑指offer》上的一道题,刚开始觉得这是一道挺简单的题目,后来发现自己太年轻了,考虑的因素太少了,思考了而是分钟还是无从下手,看了作者的思路深深被他折服了,题目如下: 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串 “+100”、”5e2”、”-123”、”3.1415” 以及 “-1E-16” 都表示数值,但”12e”、”1a3.14”、”...原创 2018-09-05 15:24:45 · 228 阅读 · 0 评论 -
剑指offer之数组中数字出现的次数
1. 题目 一个整型数组里面除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(N),空间复杂度是O(1)。 2. 思路 首先,可以想一下,如果数组中只有一个数字只出现了一次,其他数字都出现了两次,怎么找出这个数字呢?根据这个问题可以想到异或的一个性质:**任何一个数字异或它自己都等于0。**也就是说,如果从头到尾异或每个数字,那么最终的结果就是那个只出现...原创 2018-10-10 09:47:03 · 141 阅读 · 0 评论 -
剑指offer之不修改数组找出重复的数字
1. 题目 在一个长度为n+1的数组里的所有数字都在 1~n 的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。例如,如果输入长度为 8 的数组 {2,3,5,4,3,2,6,7},那么对应的输出是重复的数字 2 或者 3。 2. 思路 这道题目可以把 1~n 数字从中间的数字 m 分为两部分,前面一半为 1~m,后面一半为 m+1~n。如果 1~m...原创 2018-10-10 16:12:01 · 261 阅读 · 0 评论