• 总是忘了一些条件的判断,比如非空或者其他之类。
 #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. 文本框defalutValue的使用

    以下页面中的文本框的值无论怎么改变,点击“原始值”按钮始终会得到初始页面的时候的值,即“ffffffffffffff” <!DOCTYPE html> <html> <h ...

  2. .Net与 WebAssembly 随笔

    WebAssembly 是啥 - WebAssembly 是一种浏览器支持的字节码格式,WebAssembly 字节码和底层机器码很相似可快速装载运行,因此性能相对于 JS 解释执行大大提升,需要放到 ...

  3. MVC 纯Table实现树节点效果+授权

    这几夜心里颇不平静, 奈何 JS水平有限,前台效果耗时四天,后台传值一天,直至昨夜丑时测试初步完成,其实就是一个给tree来授权,网上开源的插件很多,如treeview.treejs.easyui 等 ...

  4. Centos7下安装配置elasticsearch 6.3.1

    1)下载 Elasticsearch 6.3.1 地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1 ...

  5. pandas nan值处理

    创建DataFrame样例数据 >>> import pandas as pd >>> import numpy as np >>> data = ...

  6. vue前端面试题知识点整理

    vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

  7. [转载]URI 源码分析

    需要提前了解下什么是URI,及URI和URL的区别: URI. URL 和 URN 的区别 URI 引用包括最多三个部分:模式.模式特定部分和片段标识符.一般为: 模式:模式特定部分:片段 如果省略模 ...

  8. js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结

    写前端的时候,很多的时候是避免不了注册这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那么 ...

  9. 初步了解,vue的转发机制(proxyTable)

    vue的转发机制(proxyTable),proxyTable代理功能可以实现转发机制,需要修改config里面修改index.js文件 修改index.vue中请求的代码(该功能是webpack-s ...

  10. window.onload

    window.onload事件 window.onload  = function ()  { JS代码块} 当页面中的DOM节点(元素)都加载完的时候执行的JS代码