我是靠谱客的博主 帅气香烟,最近开发中收集的这篇文章主要介绍[LeetCode] 列表找唯一(元素或者序号)出处分析其它,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

出处

只出现一次的数字
字符串中的第一个唯一字符

分析

关于找唯一,简单使用二重循环会出现超时问题,只能使用别的方式。

  • 简单版
    建立一个相同长度的数组,标记每个元素是否曾经出现过,如果是标记为true,否则为false。之后遍历这个数组,如果出现false,返回即可。
class Solution {
    public int firstUniqChar(String s) {
        if(s == null || "".equals(s)) {
            return -1;
        } else {
            char[] chars = s.toCharArray();
            int[] nums = new int[chars.length];
            for(int i=0;i<chars.length;i++) {
                nums[i] = (int) chars[i];
            }
            boolean[] mirror = new boolean[nums.length];
            for(int i=0;i<nums.length;i++) {
                boolean match = false;
                for(int j=0;j<nums.length;j++) {
                    if(i != j && nums[i] == nums[j]) {
                        match = true;
                        break;
                    }
                }
                mirror[i] = match;          
            }
            for(int i=0;i<nums.length;i++) {
                if(!mirror[i]) {
                    return i;
                }
            }
            return -1;
        }
    }
}
  • 进阶版
    通过位异或方式计算,初始状态给0,a^a=0,a^0=a 因此最后留下的肯定是唯一的数字~
class Solution {
    public int singleNumber(int[] A) {
        if (A == null || A.length == 0) {
            return -1;
        }
        int rst = 0;
        for (int aA : A) {
            rst ^= aA;
        }
        return rst;
    }
}

其它

另一个题 字符串中的第一个唯一字符
将String变为char[],然后变成int[] 就可以按照上边的方法解决了。

最后

以上就是帅气香烟为你收集整理的[LeetCode] 列表找唯一(元素或者序号)出处分析其它的全部内容,希望文章能够帮你解决[LeetCode] 列表找唯一(元素或者序号)出处分析其它所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部