• 总是忘了一些条件的判断,比如非空或者其他之类。
 #include<iostream>
using namespace std; int Frepeat(int num[],int length)
{
if(num == nullptr && length <)
{
return -;
} for(int i = ;i <length ;i++)
{
if(num[i] < || num[i]>= length)
return -;
}
//int n[] = new int[length -1]();// 这里显示类型不匹配 cannot convert from int * to int [] int *n = new int[length -](); for(int i = ;i < length ;i++)
{
int d = num[i];
n[d]++;
if(n[d] > )
{
return d;
}
}
return -;
} int main()
{
int a[] = {,,,,,,};
int result = Frepeat(a,);
cout << result;
system("pause");
}
  • new数组的写法是

    int *a = new int[n]

    int *a = new int(n)

    只申请了一个对象,并且把初值设成了n...

  • new申请的空间是返回一个指针
  • int n[]  ,这样的数组只有在函数的函数中才能指针化数组,其他的情况下,都不是指针。
 int Frepeat02(int num[],int length) //改变原始数组的位置
{
if(num == nullptr && length <)
{
return -;
} for(int i = ;i <length ;i++)
{
if(num[i] < || num[i]>= length)
return -;
} for(int i = ;i <length; i++)
{
while(num[i] != i)
{
if(num[ num[i] ] == num[i]) //这里就是交换的两个下标的值相等
{
return num[i]; } //int temp = num[i]; 这里并没有交换啊 陷入死循环的
//num[i] = num[ num[i] ];
//num[ num[i] ] = temp; int temp = num[i];
num[i] = num[ temp ];
num[ temp ] = temp;
}
}
return -;
}
 int  Fcount(int *num,int length ,int Start, int mid)
{
if(num == nullptr && Start < && mid <Start)
{
return -;
}
int count = ;
for(int i = ;i< length ;i++)
{
if(num[i] >= Start && num[i]<= mid)
count++;
}
return count;
} int Frepeat_nochange(int num[],int length) //不改变原始数组的位置 采用的是二分查找方法
{
if(num == nullptr && length <= )
{
return -;
} for(int i = ;i <length ;i++)
{
if(num[i] < || num[i]>= length)
return -;
}
int Start = ;
int End = length - ;
while(Start <= End)
{
int mid = (End - Start)/ + Start;
int count = Fcount(num,length,Start,mid);
if(Start == End )
{
if(count >)
return Start;
else
return -;
}
if(count > mid -Start +)
End = mid;
else
Start = mid + ; }
return -; }

面试题3--数组中的重复数字(new数组的新写法)的更多相关文章

  1. lintcode :Remove Duplicates from Sorted Array II 删除排序数组中的重复数字 II

    题目: 删除排序数组中的重复数字 II 跟进“删除重复数字”: 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2, ...

  2. lintcode :Remove Duplicates from Sorted Array 删除排序数组中的重复数字

    题目: 删除排序数组中的重复数字 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成.  样例 ...

  3. C/C++面试之算法系列--去除数组中的重复数字

    去除数组中的重复数字 Sailor_forever  sailing_9806@163.com 转载请注明 http://blog.csdn.net/sailor_8318/archive/2008/ ...

  4. lintcode101 删除排序数组中的重复数字 II

    删除排序数组中的重复数字 II   跟进“删除重复数字”: 如果可以允许出现两次重复将如何处理? 在:lintcode100删除排序数组中的重复数字 的基础上进行改进. class Solution ...

  5. lintcode100 删除排序数组中的重复数字

    删除排序数组中的重复数字   给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成. 您在真实的 ...

  6. lintcode-101-删除排序数组中的重复数字 II

    101-删除排序数组中的重复数字 II 跟进"删除重复数字": 如果可以允许出现两次重复将如何处理? 样例 标签 数组 两根指针 脸书 思路 参照上一篇博客lintcode-100 ...

  7. lintcode-100-删除排序数组中的重复数字

    100-删除排序数组中的重复数字 素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成. 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时 ...

  8. [剑指offer]3.数组中的重复数字

    3.数组中的重复数字 题目 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了 ...

  9. LintCode- 删除排序数组中的重复数字

    题目描述: 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成. 样例 给出数组A =[1,1 ...

  10. 删除排序数组中的重复数字 II · Remove Duplicates from Sorted Array II

    重复一次 [抄题]: 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成. [思维问题]: [ ...

随机推荐

  1. 从Redis中删除大集合对象的方法

    Redis中的大集合对象,如set.zset等,如果有上千万个元素,一般是不能直接用del命令来删除的,因为del命令可能会耗时几秒钟,而redis本身是单线程的,在高并发的情况下会阻塞大量的请求,严 ...

  2. 保存配置,获取配置,XML

    private void SaveSOConfig() { //保存配置 Dictionary<string, string> PrintConfigDIC = new Dictionar ...

  3. 【数据下载】利用wget命令批量下载ftp文件和文件夹

    这是一个“”数据大发现”的时代,大家都在创造数据,使用数据以及分享数据,首先一步我们就需要从数据库download我们需要的数据. Ftp是一种常见的在线数据库,今天介绍一种可以批量下载文件夹的方法, ...

  4. Java笔记 #07# Hibernate Validator

    Hibernate Validator是Spring Boot默认附带的标准校验API(javax.validation)实现. 应用实例(配合切面) 采用注解定义切面.java @Aspect @C ...

  5. Extundelete 数据恢复

    Extundelete 数据恢复 “rm -rf /*” 是我们经常使用的命令,操作不慎全盘接蹦,从删库到跑路,身为过来人的我们都经历过rm带来的痛苦. 不要慌,当我们有了Extundelete就可以 ...

  6. 16: mint-ui移动端

    1.1 mint-ui安装与介绍  官网:http://mint-ui.github.io/docs/#/zh-cn2/loadmore 1.安装与引用 // 安装Vue 2.0 npm instal ...

  7. radhat6.6上安装oracle12c RAC (一)

    软件环境:VMware.redhat6.6.oracle12c(linuxx64_12201_database.zip).12cgrid(linuxx64_12201_grid_home.zip) 一 ...

  8. 基于OpenCV做“三维重建”(1)--找到并绘制棋盘

    <OpenCV计算机视觉编程攻略(第3版)>这套书已经出到第3版了,如果你非要我说这本书有多好,我说不出来:只是很多我第一手的例子都是来源于这本书的-相比较OpenCV官方提供的代码,这本 ...

  9. style1

    <!doctype html> 我的简历 基本信息 姓名 张三 性别 男 应聘职位 WEb前端工程师 联系方式 手机 12312341234 Email joinefe@baidu.com ...

  10. 02_计算机网络的OSI七层(应表会传网数物)

    七层: 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 五层: 应用层 传输层 网络层 数据链路层 物理层 四层: 应用层 传输层 网络层 数据接口层 一.物理层(Physical Lay ...