原文:(剑指Offer)面试题51:数组中重复的数字

题目: 在一个长度为n的数组里的所有数字都在 到n 的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为 的数组 , , , , , , ,那么对应的输出是重复的数字 或者 。 思路: 排序 将数组排序,然后扫描排序后的数组即可。 时间复杂度:O nlogn ,空间复杂度:O 哈希表 从头到尾扫描数组,每扫 ...

2015-07-31 20:38 0 6355 推荐指数:

查看详情

(python)Offer 面试题51数组重复数字

问题描述   在长度为n的数组,所有的元素都是0到n-1的范围内。 数组的某些数字重复的,但不知道有几个重复数字,也不知道重复了几次,请找出任意重复数字。 例如,输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出为2或3。 解题思路 1、判断输入数组有无元素非法 ...

Sat Mar 10 04:32:00 CST 2018 5 2737
offer面试题36:数组的逆序对

题目: 在数组的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组的逆序对的总数。 思路: 归并排序的合并过程。主要是考虑合并两个有序序列时,计算逆序对数。 对于两个升序序列,设置两个下标:两个有序序列的末尾。每次比较两个末尾值,如果前末尾 ...

Fri Aug 14 00:56:00 CST 2015 0 2326
Offer面试题:7.旋转数组的最小数字

一、题目:旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。   这道题最直观的解法并不 ...

Fri Aug 21 08:18:00 CST 2015 4 7437
Offer面试题38:数字在排序数组中出现的次数

题目: 统计一个数字在排序数组中出现的次数。 思路: 1、顺序遍历 顺序扫描一遍数组,统计该数字出现的次数。 时间复杂度:O(n) 2、二分查找 假设我们需要找的数字是k,那么就需要找到数组的第一个k和最后一个k出现的位置。 如何通过二分查找得到第一个k的位置呢? 取数组中间 ...

Mon Jul 27 02:16:00 CST 2015 0 2030
Offer面试题:32.数字在排序数组中出现的次数

一、题目:数字在排序数组中出现的次数 题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4。 二、解题思路 2.1 直接运用二分查找   既然输入的数组是排序的,那么我们很自然地就能想到 ...

Sun Sep 20 19:04:00 CST 2015 0 6130
offer面试题29:数组中出现次数超过一半的数字

 这道题很多人都会想到对这个数组进行排序。那么在已排序的数组,位于中间位置的数字就是超过数组长度一半的那个数。由于我们需要对数组进行排序,因此总时间复杂度为 O(n*lgN)。   解法二、利用数组特点找出 O(N) 的算法: 题目中要找的数字出现的次数超过数组长度的一半 ...

Wed Jul 08 04:13:00 CST 2015 1 3651
Offer面试题55:字符流第一个不重复的字符

题目: 请实现一个函数用来找出字符流第一个只出现一次的字符。例如,当从字符流只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流读出前六个字符“google"时,第一个只出现一次的字符是"l"。 思路: 字符流:像流水一样的字符,一去不复返,意味着只能访问一次 ...

Wed Aug 05 05:24:00 CST 2015 0 3450
Offer面试题57:删除链表重复结点

题目: 在一个排序的链表,存在重复的结点,请删除该链表重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路: 由于头结点有可能被删除,因此需要创建新的头结点 ...

Thu Aug 06 05:48:00 CST 2015 0 3486
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM