当前位置: 首页 > news >正文

网站开发语言查询/网站技术解决方案

网站开发语言查询,网站技术解决方案,最好的营销型网站,设计公司起名常用字前言: 最近更最后一篇关于数组方面的算法题。下阶段准备上链表的题。 题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字…

前言:
最近更最后一篇关于数组方面的算法题。下阶段准备上链表的题。

题目描述

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。

解题分析

这里我分享三个方法吧,具体使用自己选择。
方法一:我们先对数组进行排序,然后查找相邻数组是否相等,如果出现相等则出现了重复数字,如果没有相等则无。
方法二:使用HashSet,HashSet中存储的元素是不重复的,所以我们可以利用这个特性来进行。将数组元素插入HashSet,并同时判断Set是否存在元素,存在则true,不存在则false。
方法三:利用特性来进行求解。数组的长度为 n 且所有数字都在 0 到 n-1 的范围内,我们可以将每次遇到的数进行"归位",当某个数发现自己的"位置"被相同的数占了,则出现重复。扫描整个数组,当扫描到下标为 i 的数字时,首先比较该数字(m)是否等于 i,如果是,则接着扫描下一个数字;如果不是,则拿 m 与第 m 个数比较。如果 m 与第 m 个数相等,则说明出现重复了;如果 m 与第 m 个数不相等,则将 m 与第 m 个数交换,将 m “归位”,再重复比较交换的过程,直到发现重复的数。

代码样例

方法一

package com.asong.leetcode.duplicateArray;import java.util.Arrays;/*** 数组中的重复的数字* 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。* 也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},* 那么对应的输出是第一个重复的数字2。* 思路:先进行排序,然后在查找相邻有没有相等的,没有则false,有则放到duplication[0]中然后返回。*/
public class Solution {// Parameters://    numbers:     an array of integers//    length:      the length of array numbers//    duplication: (Output) the duplicated number in the array number,length of duplication array is 1,so using duplication[0] = ? in implementation;//                  Here duplication like pointor in C/C++, duplication[0] equal *duplication in C/C++//    这里要特别注意~返回任意重复的一个,赋值duplication[0]// Return value:       true if the input is valid, and there are some duplications in the array number//                     otherwise falsepublic boolean duplicate(int numbers[],int length,int [] duplication) {if(numbers==null||length==0){return false;}Arrays.sort(numbers);for (int i = 1; i < length; i++) {if(numbers[i]==numbers[i-1]){duplication[0] = numbers[i];return true;}}return false;}
}

方法二

package com.asong.leetcode.duplicateArray;import java.util.HashSet;/*** 数组中重复的数字* 这里使用HashSet来实现,因为HashSet不存储重复的元素这一特性来实现。*/
public class Solution2 {public boolean duplicate(int numbers[],int length,int [] duplication) {if(numbers==null||length==0){return false;}HashSet<Integer> set = new HashSet<>();for (int i = 0; i < length; i++) {if(set.contains(numbers[i])){duplication[0] = numbers[i];return true;}else {set.add(numbers[i]);}}return false;}
}

方法三

package com.asong.leetcode.duplicateArray;/*** 找出数组中的重复数字*/
public class Solution3 {public boolean duplicate(int numbers[],int length,int [] duplication) {if(numbers==null||length==0){return false;}for (int i = 0; i < length; i++) {while (numbers[i]!=i){if(numbers[i] == numbers[numbers[i]]){duplication[0] = numbers[i];return true;}int tmp = numbers[i];numbers[i] = numbers[tmp];numbers[tmp] = tmp;}}return false;}
}
http://www.jmfq.cn/news/5011165.html

相关文章:

  • 昆明疫情最新情况今天/seo营销优化软件
  • 河南专业网站建设/seo公司系统
  • 做网站要交百分七十定金/今日头条热搜榜
  • 衡水网站制作与推广/天津搜索引擎推广
  • 做聊天网站的视频教程/百度关键词排名推广工具
  • 北京网站关键词排名推广/东莞外贸推广公司
  • 网站蜘蛛爬行/游戏推广公司
  • 腾讯网站认证/广州市口碑seo推广
  • 阳江市做网站/聊城今日头条最新
  • 大连网站制作咨询/优化大师软件大全
  • 网站流量分布/百度优化是什么意思
  • 黄石网站建设报价/高权重网站出售
  • 江西网站建设费用/推广项目网站
  • 武汉网站建设方法/百度本地推广
  • 可以建网站的路由器/nba最新消息交易
  • 郑州做网站费用/徐州seo排名公司
  • 品牌内容包括哪些/江门seo网站推广
  • 局域网网页制作工具/页面优化的方法有哪些
  • 合肥设计网站/今日头条郑州头条新闻
  • 做设计在哪个网站找图片大全/国内十大软件培训机构
  • asp.net 怎么做网站/公关公司经营范围
  • 小红书seo是什么/福建网络seo关键词优化教程
  • 电话销售做网站打官司/外贸seo优化公司
  • 南昌市网站建设公司/windows优化大师可以卸载吗
  • 从学习php到可以独立做网站需要多久/近期的时事热点或新闻事件
  • 益阳网站建设哪里好/网站注册页面
  • 织梦做中英文网站/b2b网站源码
  • 如何建设一个双语的网站/数字营销案例
  • 南宁网站建设方案报价/郑州做网站推广哪家好
  • 企业网站内容/网络营销理论