136. Single Number

本文探讨了在整数数组中查找唯一出现一次元素的有效算法。介绍了三种解决方案,包括使用额外列表、哈希映射及异或操作。重点分析了异或算法,其凭借线性时间复杂度和不使用额外内存的优势,成为最优解。

Given a non-empty array of integers, every element appears twice except for one. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

Example 1:

Input: [2,2,1]
Output: 1

Example 2:

Input: [4,1,2,1,2]
Output: 4

本菜鸟:

class Solution {
    public int singleNumber(int[] nums) {
         List<Integer> list= new ArrayList();  
    	 int sum = 0;
         for(int i=0;i<nums.length;i++){  
        	 sum += nums[i];
             if(!list.contains(nums[i])){  
                 list.add(nums[i]);  
             }  
         }  
         int res = 0;
         for (int i = 0; i < list.size(); i++) {
             res = list.get(i) + res;
         }
        return 2*res-sum;
    }
}

时间复杂度O(n^2),比较差,所以花费了166ms,效果倒数。

 

稍微改进一下的版本:

@akashs73
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
 	    for(int i=0;i<nums.length;i++){
 	    int a = nums[i];
 	    if(map.containsKey(a)) {
 	    	map.remove(a);
 	    }else {
 	       map.put(a, 1);
 	    }
 	    	
 	  }
 	  return (int) map.keySet().toArray()[0];         

大神的代码:

int x = 0; for(int a: nums) x^=a;
return x;

仅仅两行,时间复杂度为O(n),比这道题的在线提交的100%java代码都快。

这里用到了异或的性质:x^y^x=y;

 

 

根据原作 https://pan.quark.cn/s/0ed355622f0f 的源码改编 野火IM解决方案 野火IM是专业级即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。 主要特性有:私有部署安全可靠,性能强大,功能齐全,全平台支持,开源率高,部署运维简单,二次开发友好,方便与第三方系统对接或者嵌入现有系统中。 详细情况请参考在线文档。 主要包括一下项目: 野火IM Vue Electron Demo,演示如何将野火IM的能力集成到Vue Electron项目。 前置说明 本项目所使用的是需要付费的,价格请参考费用详情 支持试用,具体请看试用说明 本项目默认只能连接到官方服务,购买或申请试用之后,替换,即可连到自行部署的服务 分支说明 :基于开发,是未来的开发重心 :基于开发,进入维护模式,不再开发新功能,鉴于已经终止支持且不再维护,建议客户升级到版本 环境依赖 mac系统 最新版本的Xcode nodejs v18.19.0 npm v10.2.3 python 2.7.x git npm install -g node-gyp@8.3.0 windows系统 nodejs v18.19.0 python 2.7.x git npm 6.14.15 npm install --global --vs2019 --production windows-build-tools 本步安装windows开发环境的安装内容较多,如果网络情况不好可能需要等较长时间,选择早上网络较好时安装是个好的选择 或参考手动安装 windows-build-tools进行安装 npm install -g node-gyp@8.3.0 linux系统 nodej...
### C# `Convert.ToSingle` 方法使用说明 #### 方法概述 `Convert.ToSingle` 是 .NET Framework 提供的一个静态方法,用于将指定类型的数值转换为单精度浮点数 (`float`)。此方法能够处理多种输入类型并返回相应的 `float` 值。 #### 参数与返回值 该方法接受一个参数,通常是一个实现了 `IConvertible` 接口的类型实例,如整数、字符串或其他数值类型,并尝试将其转换成 `float` 类型[^2]。 #### 使用示例 以下是几个常见的使用场景: ```csharp // 整数转浮点数 int intValue = 10; float resultFloatFromInt = Convert.ToSingle(intValue); Console.WriteLine($"Integer to Float: {resultFloatFromInt}"); // 输出 Integer to Float: 10.0 // 字符串转浮点数 string stringValue = "123.45"; float resultFloatFromString = Convert.ToSingle(stringValue); Console.WriteLine($"String to Float: {resultFloatFromString}"); // 输出 String to Float: 123.45 ``` #### 特殊情况处理 当遇到无法解析的数据时,`Convert.ToSingle` 可能会抛出异常。对于可能包含无效字符或格式错误的字符串,在执行转换前应先验证数据的有效性。 #### 注意事项 - 对于超出范围的情况(即源值太大或太小),可能会得到正负无穷大或者零的结果。 - 如果传入的是 `null` 或者空字符串,则默认返回零(`0.0f`)。 - 当处理来自用户的输入或者其他不可信来源的数据时,建议捕获潜在的异常以防止程序崩溃。 #### 错误处理示范 为了更安全地使用 `Convert.ToSingle`,可以在实际项目中加入异常捕捉机制来应对可能出现的问题: ```csharp try { string userInput = Console.ReadLine(); float convertedNumber = Convert.ToSingle(userInput); Console.WriteLine($"Converted number is :{convertedNumber}"); } catch (FormatException ex){ Console.WriteLine("The input format was not correct."); } catch (OverflowException ox){ Console.WriteLine("The value provided cannot be represented as a single precision floating point number."); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值