寒假题练——day(3)
创始人
2024-05-10 17:55:35
0次

题目1:

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

你可以假设数组是非空的,并且给定的数组总是存在多数元素。
进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/majority-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

分析:
方法1:可以一个数接着一个数进行比较,找到重复的数就计数1。当计数大于 ⌊ n/2 ⌋ 的时候直接返回值。缺点:不满足时间复杂度的要求。
方法2:一个数组中有一个数字出现次数大于 n/2 ,从第 0 个字符开始,假设它就是最多的那个数字,遇到相同的数字则计数 +1 , 遇到不同的则计数 -1 ,其实就是互相消耗,等到计数为 0 的时候,表示本次互拼完毕,从下一个字符重新开始互拼,但是归根结底出现次数大于 n/2 的这个数字数量更多,因此也是最后保留的字符。优点:只需要比较一次就可找出数据

int majorityElement(int* nums, int numsSize)
{//控制循环int i;//设第一个元素就是为所求int tmp = nums[0];//计数为1int count = 1;//遍历剩下的元素for (i = 1; i < numsSize; i++){//如果和计数的元素相等,计数自增1,不相等就自减1if (nums[i] == tmp){count++;}else{count--;}//当count为零的时候,将设的元素开始到下个元素if (count == 0){tmp = nums[i + 1];}}//循环到最后,此时标记的元素就是所求的元素//因为当一个数组中,有大于⌊ n/2 ⌋ 的元素,一定存在m小于⌊ n/2 ⌋ 的整数,和m个不相同的元素相消//相消后剩下的元素就是所求return tmp;
}

题目二:

*给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。

请不要使用除法,且在 O(n) 时间复杂度内完成此题。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/product-of-array-except-self
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。*/

int* productExceptSelf(int* nums, int numsSize, int* returnSize)
{*returnSize = numsSize;int* answer = (int*)calloc(numsSize, sizeof(int));if (answer == NULL){printf("No space avalible\n");exit(1);}int left = 1;int right = 1;for (int i = 0; i < numsSize; i++){answer[i] = left;left *= nums[i];}for (int i = numsSize; i >= 0; i++){answer[i] = right;right *= nums[i];}return answer;
}

大佬思路分享
在这里插入图片描述

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...