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

LeeCode 137. 只出现一次的数字II

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。

示例 1:

输入:nums = [2,2,3,2]
输出:3

示例 2:

输入:nums = [0,1,0,1,0,1,99]
输出:99

提示:

  • 1 <= nums.length <= 3 * 104
  • -231 <= nums[i] <= 231 - 1
  • nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次

答案:

// 整型数组比较函数(升序)
int compare(const void* a, const void* b) {return (*(int*)a - *(int*)b);
}int singleNumber(int* nums, int numsSize) { // LeeCode 137. 只出现一次的数字II// 先排序qsort(nums, numsSize, sizeof(int), compare);int n = nums[0];int count = 1;for (int i = 1; i < numsSize; i++) {if (nums[i] == n) {count++;}else {if (count == 1) {return n;}if (i == numsSize - 1) {return nums[i];}n = nums[i];count = 1;}}return n;
}

测试代码:

void testLeeCode137(void) {int nums[] = {2, 2, 3, 2};int res = singleNumber(nums, 4);printf("res: %d\n", res);
}

打印:

ok. 提交到LeeCode报错:

应该是compare函数的减法运算结果超int范围了。该函数修改后如下:

int compare(const void* a, const void* b) {//return (*(int*)a - *(int*)b); // 运算可能会超int范围if (*(int*)a > *(int*)b) return 1;if (*(int*)a == *(int*)b) return 0;return -1;
}

再次提交到LeeCode:

ok. 

http://www.dtcms.com/a/546514.html

相关文章:

  • AOI设备在消费电子领域的检测应用
  • 网站制作 成都土巴兔官网
  • 如何 做网站跳转建设网站企业网上银行
  • 基于需求驱动的自动驾驶感知任务数据集缺口识别与缓解方法
  • 上海文明城市建设网站如何做网站商铺
  • 怎么自己给自己的网站做推广做旅游网站毕设任务书
  • 丹阳网站建设价位网站建设的中期目标
  • html 网站链接cms编码是什么
  • 【原理揭秘】Nginx 匹配规则优先级详解
  • DeepSeek正在探索一种可能显著提升AI“记忆力”的新方法:用图像而非传统的文本token来存储信息
  • 网站数据库怎么备份网站跟换域名
  • 深入理解 Rust 的 VecDeque:环形缓冲区的高效设计与实践
  • wordpress只能本地访问网站优化公司多少钱
  • 网站二级域名周村区建设网站
  • 广告设计公司网站源码登陆网站空间
  • 网站开发用什么编程网站建设吸引人的话语
  • 郑州网站搜索排名网站怎么做悬浮图片放大
  • 仓颉言 Stack 栈的实现细节:从底层设计到性能优化
  • 黑五手表网站东莞网络推广网站
  • 杭州公积金网站查询系统网站建设用什么软件
  • 人人设计网官方网站来一个地址你们知道的
  • 迪杰斯特拉(dijkstra)算法
  • 交三百能在网站上找兼职做的it运维工作总结
  • 建设行业公司网站wordpress 浏览量
  • 机器学习03——matplotlib
  • 2.5 大模型硬件
  • Sierra wordpress济南百度整站seo推广
  • 高端大气的网站首页天津市网站建设天津商城建设
  • 常德建设企业网站怎么搭建Wordpress博客
  • 灰系网站电商营销推广有哪些?