首页 > TAG信息列表 > Offer1
【剑指Offer1】0~n-1中缺失的数字
题目: 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 思路: 首先就是遍历: class Solution { public int missingNumber(int[] nums) { int res = -1;【剑指Offer1】数组中重复的数字
题目: 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 首先用的list.countains方法,结果超时了,说明数据量比较大的情况下List的countains方法性能不【剑指Offer1】替换空格
题目: 请实现一个函数,把字符串 s 中的每个空格替换成"%20" 思路: 首先排除s.replace(" ", "%20"),纯纯耍流氓。 就是考虑replace函数的底层实现,由于replace是支持正则表达式的(估计很多人不知道,我也是偶然得知),实际底层实现复杂的多,这里我只需要实现替换空格即可。 String转成char【剑指Offer1】左旋转字符串
题目: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。 比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 思路: 之前有做过类似的题目,当时是int数组的右移,和字符串的左旋是一样的 先【剑指Offer1】复杂链表的复制
题目: 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 例如 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]剑指|| offer1整数除法
注意溢出: 用减法代替除法 用long long代替int class Solution { public: int divide(long long a, long long b) { if(a/b<0) return a/b>INT_MIN?a/b:INT_MIN; if(a/b>0) return a/b>INT_MAX?INT_MAX:a/b; if(a==0) return 0; return 0; } };剑指offer1-7题
/** 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路: 选定一个维度(行或列)先找到需要查找的元素所在的行(列),再从该行(剑指offer1:组类型”第1题——二维数组中的查找
1. 思路: 缩小范围 2. 方法: (1)要查找的数字等于数组中的数字,结束查找过程; (2)要查找的数字小于数组中的数字,去除该数字右边的数字,在剩下的数字里查找; (3)要查找的数字大于数组中的数字,去除该数字上边的数字,在剩下的数字里查找。 3. 图例 4. C+