从数组里挑出仅仅出现一次的对象

去某公司面试~

技术问的问题是给一个数组,挑出里面仅仅出现一次的数字。

下面是我给出的方法,算不上正规的算法。也没考虑什么控件复杂度。

假设你是大牛,请在回复里写一下 你的算法。欢迎互动

public static void main(String[] args) {
        int array[]={1,3,5,7,9,1,3,5,7};
        int length=array.length;
        StringBuilder sb= new StringBuilder();
        for(int i=0;i<length;i++){
            sb.append(array[i]);
        }
        for(int i=0;i<length;i++){
            int firstPosition=sb.indexOf(array[i]+"");
            int endPosition=sb.lastIndexOf(array[i]+"");
            if(firstPosition==endPosition)
                System.out.println("出现一次的是:"+array[i]);
        }

    }

针对1楼提出的bug

我做出例如以下改动,

<span style="font-size:18px;color:#000000;">public void find(){
        int array[]={11,13,55,77,99,21,13,55,77};
        int length=array.length;
        StringBuilder sb= new StringBuilder();
        for(int i=0;i<length;i++){
            sb.append(array[i]+"s");
        }
        for(int i=0;i<length;i++){
            int firstPosition=sb.indexOf(array[i]+"s");
            int endPosition=sb.lastIndexOf(array[i]+"s");
            if(firstPosition==endPosition)
                System.out.println("出现一次的是:"+array[i]);
            else
                System.out.println("出现多次的是:"+array[i]);
        }
    }</span>
时间: 2024-10-13 07:36:24

从数组里挑出仅仅出现一次的对象的相关文章

算法题之找出数组里第K大的数

问题:找出一个数组里面前K个最大数. 解法一(直接解法): 对数组用快速排序,然后直接挑出第k大的数.这种方法的时间复杂度是O(Nlog(N)).N为原数组长度. 这个解法含有很多冗余,因为把整个数组都排序了,而实际上我们不需要这样做. 解法二(K数组排序): 首先,创建一个长度为K的空数组.从原数组中先挑出K个数进行排序并放到这个空数组中.这一步的时间复杂度是O(Klog(K)). 接着,从剩下的N-K个值中,依次遍历并与上面数组的末尾的数(即里面的最大数)相比较,并插入到合适位置.这一步的时

水贴王之续,找出数组里出现频率最高的元素

找出数组里出现频率最高的元素 个人信息:就读于燕大本科软件工程专业 目前大三; 本人博客:google搜索"cqs_2012"即可; 个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献; 博客内容:水贴王问题之续 博客时间:2014-5-12; 编程语言:Java ; 编程坏境:Windows 7 专业版 x64; 编程工具:jdk,eclipse x64; 制图工具:office 2007 powerpoint; 硬件信息:7G-3 笔记本; 真言: 痛苦的活着比

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最小的一个

/** * @Version 1.0.0 * 输入一个正整数数组,把数组里所有数字拼接起来排成一个数, * 打印能拼接出的所有数字的最小的一个.例如输入{3,32,321,4},则打印最小的数字是 * 321323 * * 其实就是一次排序,只是比较大小的方式与数值比较有所不同 * 这里采用冒泡排序的方式 */public class Pro33 { @MyAnswer public static void f(int array[]){ for(int i=0;i<array.length-1

PHP使用正则表达式分离出HTML里我们所需的数据,封装到二维数组里

HTML代码(reg.html) <TR id=J-item-1 class="J-item " sizset="53" sizcache="3"> <TD class=time> <P class=time-d> 2015.07.18 </P> </TD> <TD class=memo sizset="53" sizcache="3">

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

package siweifasan_6_5; /** * @Description:在一个长度为n的数组里的所有数字都在0到n-1的范围内. * 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次. * 请找出数组中任意一个重复的数字. * 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2. * @Parameters: // Parameters: // numbers: an array of integers //

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

/*在一个长度为n的数组里的所有数字都在0到n-1的范围内. * 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. * 请找出数组中任意一个重复的数字. * 例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3.*/ import java.util.*; public class Class1 { static class findRepeatedNumber{ public int findRepeatedN

【猜牌问题】甲乙都知道桌子的抽屉里有16张扑克牌: 红桃A、Q、4 黑桃J、8、4、2、7、3 草色K、Q、5、4、6 方块A、5 教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉甲,把这张牌的花色告诉乙。教授问:你们能推理出是什么牌吗? 甲:我不知道这张牌。 乙:我知道你不知道这张牌。 甲:现在我知道这张牌了。 乙:我也知道了。 请问:这张牌是什么牌?

甲乙都知道桌子的抽屉里有16张扑克牌: 红桃A.Q.4 黑桃J.8.4.2.7.3 草色K.Q.5.4.6 方块A.5 教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉甲,把这张牌的花色告诉乙.教授问:你们能推理出是什么牌吗? 甲:我不知道这张牌.乙:我知道你不知道这张牌.甲:现在我知道这张牌了.乙:我也知道了. 请问:这张牌是什么牌? 解: 教授告知甲点数,告知乙花色 人物 已知 未知 甲 A 红桃.方块 Q 红桃.草色 4 红桃.黑桃.草色 J 黑桃 8 黑桃 2 黑桃 7 黑桃 3 黑

从100万个整数里找出100个最大的数

声明:本文最初发表于<电脑编程技巧与维护>2006年第5期,版本所有,如蒙转载,敬请连此声明一起转载,否则追究侵权责任.网上发表于恋花蝶的博客http://lanphaday.bokee.com 题目:从1亿个整数数中找出最大的1万个. 拿到这道题,马上就会想到的方法是建立一个数组把1亿个数装起来,然后用for循环遍历这个数组,找出最大的1万个数来.原因很简单,因为如果要找出最大的那个数,就是这样解决的:而找最大的1万个数,只是重复1万遍而已. template< class T >

编程之美-----在一个整型数组里找出只出现过一次的那两个数

一.一个数组里除了一个数字之外,其他的数字都出现了两次 用异或来解 #include <iostream> using namespace std; int main() { int T; int n,m; while(cin>>T,T){ cin>>n; while(--T){ cin>>m; n=m^n; } printf("%d\n",n); } return 0; } 扩展: 一个整型数组里除了两个数字之外,其他的数字都出现了两次