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

linux代码做网站附近电脑培训学校

linux代码做网站,附近电脑培训学校,大气婚纱影楼网站织梦模板,纯ajax网站如何做seo题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3]输出:3 …

题目

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

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

示例 2:

  • 输入:nums = [2,2,1,1,1,2,2]
  • 输出:2

提示:

  • n == nums.length
  • 1 <= n <= 5 * 10^4
  • -10^9 <= nums[i] <= 10^9

进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。

代码

完整代码

int majorityElement(int* nums, int numsSize) {int most = nums[0];int cnt = 1;for (int i = 1; i < numsSize; i++) {if (nums[i] == most) {cnt++;} else {cnt--;if (cnt < 0) {most = nums[i];cnt = 1;}}}return most;
}

思路分析

该问题的最优解法是使用Boyer-Moore多数投票算法,时间复杂度为 O(n),空间复杂度为 O(1)。这个算法的核心思想是维护一个候选多数元素以及其计数器。当遍历数组时,如果当前元素与候选多数元素相同,计数器加一;如果不同,计数器减一。当计数器减为零时,将当前元素设为候选多数元素,并重置计数器为一。最终剩下的候选多数元素即为数组中的多数元素。

拆解分析

初始化候选元素和计数器

初始化候选多数元素 most 为数组的第一个元素,计数器 cnt 为 1。

int most = nums[0];
int cnt = 1;

遍历数组更新候选元素和计数器

遍历数组,从第二个元素开始:

  • 如果当前元素等于候选多数元素,计数器加一;
  • 否则,计数器减一;
  • 如果计数器减为零,更新候选多数元素为当前元素,并重置计数器为一。
for (int i = 1; i < numsSize; i++) {if (nums[i] == most) {cnt++;} else {cnt--;if (cnt < 0) {most = nums[i];cnt = 1;}}
}

返回候选多数元素

最终返回候选多数元素 most

return most;

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组的长度。我们只需遍历数组一次。
  • 空间复杂度:O(1),我们只使用了常数级别的额外空间。

结果

结果

一题多解

排序法

排序法思路分析

排序数组后,多数元素必定会出现在中间位置。我们可以直接返回排序后的数组中位于 n/2 位置的元素。

排序法复杂度分析

  • 时间复杂度:O(n log n),这是qsort的时间复杂度。
  • 空间复杂度:O(1),如果排序算法是原地排序,否则为 O(n)。

完整代码

#include <stdio.h>
#include <stdlib.h>int cmp(const void* a, const void* b) {return (*(int*)a - *(int*)b);
}int majorityElement(int* nums, int numsSize) {qsort(nums, numsSize, sizeof(int), cmp);return nums[numsSize / 2];
}

拆解分析

排序数组

使用标准库中的 qsort 函数对数组进行排序。

qsort(nums, numsSize, sizeof(int), cmp);
返回中间元素

由于多数元素必定会出现在中间位置,直接返回排序后数组中 numsSize / 2 位置的元素。

return nums[numsSize / 2];

结果

在这里插入图片描述

http://www.dt0577.cn/news/25196.html

相关文章:

  • 简单大方的网站友情链接交易网站
  • 重庆微信网站建设网站推广外贸
  • 室内设计联盟手机版百度seo点击软件
  • 神马排名seo企业网站优化解决方案
  • 网站建制作公司真实的网站制作
  • 域名查询权威网站北京谷歌seo
  • pc网站和app哪个容易做查询网站相关网址
  • 北京工程建设交易中心网站竞价托管推广哪家好
  • 企业展示网站模板跨境电商平台有哪些?
  • 海口h5建站新闻热点事件2024最新
  • 宜昌做网站的泰安seo排名
  • 九江网站设计公司天津关键词优化网站
  • 网站和域名都注册怎么连接成网址seo是什么服
  • 超链接到网站怎么做视频文件下载自己想做个网站怎么做
  • 刷粉网站开发搜索引擎竞价推广的优势
  • 大连app开发多少钱优化是什么意思
  • 企业的网站建设费账务处理网站怎么优化推广
  • 网站建设企业文化上优化seo
  • 静态网站代做每日财经最新消息
  • 杭州网站备案重庆网站优化排名推广
  • 网上书城网站开发的数据字典网站seo标题优化技巧
  • 网站制作高端网站建设如何推广公司
  • 网站信息安全建设方案郑州百度关键词seo
  • wordpress哪个版本phpseo优化几个关键词
  • 杭州知名建设网站设计整合营销经典案例
  • 网站建设 东莞1688官网入口
  • 网站开发功能需求清单输入关键词自动生成文章
  • wordpress 目录 导航站百度站长平台论坛
  • 绿色食品网站建设可行性网络销售的好处和意义
  • 广州网站建设品牌seo计费系统源码