• 总是忘了一些条件的判断,比如非空或者其他之类。
 #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. 初识JDBC

    1,概念: JDBC(Java DateBase Connective) ,即利用Java语言操作数据库语言 2,示例:Mysql中的JDBC 1,新建一个Dynamic Web Projectx项目 ...

  2. 指定时间生成cron表达式

    public class CronUtils { private static final SimpleDateFormat sdf = new SimpleDateFormat("ss m ...

  3. log4j2 标签解析

    根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers. status用来指定log4j本身的打印日志的级别. mo ...

  4. echarts 图的点击事件(含:点击重复触发的问题及其解决方法)

    今天用echarts的时候发现一个问题 鼠标指向不同地市触发一个事件展示该地区趋势图  但是但是后台中不管我第几次鼠标指向都会触发两次指向事件 现在贴出解决办法: 问题完美解决.但是为什么会调用两次, ...

  5. python selenium web自动化测试完整项目实例

    问题: 好多想不到的地方,中间经历了一次重构,好蛋疼: xpath定位使用的不够熟练,好多定位问题,只能靠强制等待解决: 存在功能重复的方法,因为xpath定位不同,只能分开写,有时间可以继续优化: ...

  6. LeetCode 链表2_27+二叉树的遍历(递归与非递归)

    ---恢复内容开始--- 19. 删除链表的倒数第N个节点 实现原理:设置两个指针p,q,初始时先让p走n步,之后p与q一起走,当p走到结尾的时候,删除p.next即可. public ListNod ...

  7. 基于OpenCV做“三维重建”(3)--相机参数矩阵

    通过前面的相机标定,我们能够获得一些参数模型.但是这些相机的参数矩阵到底是什么意思?怎样才能够判断是否正确?误差都会来自哪里?这里就必须要通过具体实验来加深认识.采集带相机参数的图片具有一定难度,幸好 ...

  8. maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0

    转自https://blog.csdn.net/lovesomnus/article/details/49512777 在maven中央库中查找ojdbc,发现最新的版本是10.2.0.4.0,然后在 ...

  9. [系统相关]WPS Office 2016 专业增强版 10.8.0.6470 免序列号无限制

    WPS Office (10.8.0.6470)  新增功能列表 ============================================= 改进功能列表 ------------ W ...

  10. RESTClient的基本使用

    1.本人使用的是火狐浏览器,其他浏览器应该也有(没试过),安装插件RESTClient. 2.1.打开RESTClient: