【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)

文章目录

  • 题目描述
  • 思路 & 代码
      • 思路一:哈希表
      • 思路二: 摩尔投票法

题目描述

  • 好家伙,这是今天最有意思的题目了
    在这里插入图片描述

思路 & 代码

思路一:哈希表

  • 先说缺点:空间复杂度O(n)
  • 一次遍历,记录<数组存储值,出现次数>,即可。
  • 然后遍历哈希表,找到出现次数大于 n/2 的数即可。
  • (代码就不贴了,这方法不是重点)

思路二: 摩尔投票法

  • 绝赞思路!
  • 先考虑一个问题:多国混战,不同国家的士兵会 1v1,然后双双战死。那么一个国家在什么条件下会一定胜利?
  • 答案是兵力 > 其他所有国家士兵总数
  • 最好情况下:其他士兵国家全在互殴,那么这个国家只需要对战最后剩下来的一个国家的兵力即可。
  • 最坏情况下:所有国家的士兵都刚好和这个国家对上,由于兵力 > 其他所有国家士兵总数,因此最后还是会剩下至少一个士兵,也能取得胜利。也就是最好最坏都能“胜利”
  • 显而易见,胜利国就是本题的多数元素
class Solution {public int majorityElement(int[] nums) {// 摩尔投票法:ans为当前元素,count为当前元素”兵力“// 相同,则兵力增加;不同,则兵力减少;兵力为0,则下一轮进行当前元素更新。int count = 1, ans = nums[0];for(int i=1;i<nums.length;i++){if(count == 0){ans = nums[i];// 然后用下一个判断加一次即可}if(nums[i] == ans){count++;}else{count--;}}return ans;}
}
  • 无注释版
class Solution {public int majorityElement(int[] nums) {int ans = 0;int count = 0;for(int i = 0; i < nums.length; i++) {if(count == 0) {ans = nums[i];}if(nums[i] == ans) {count++;}else {count--;}}return ans;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux环境下怎么使用pip,linux下pip的安装步骤及使用详解

linux下pip的安装步骤及使用详解pip类似RedHat里面的yum&#xff0c;安装软件非常方便。下面话不多说&#xff0c;来看看详细的介绍&#xff1a;pip下载&#xff1a;# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5834b2904f92d46aaa33326pi…

【LeetCode笔记】206. 反转链表(Java、迭代、递归、链表)

啊好久没更文了&#xff0c;前两天状态不太好。还是要坚持更文敲题噢&#xff01; 文章目录题目描述思路 & 代码题目描述 面试高频题&#xff0c;需要会用两种方法解决&#xff01;&#xff08;迭代 and 递归&#xff09;其实先写出迭代&#xff0c;递归就不难写了。 思…

当你抛弃windows使用linux,当我们厌倦了Windows系统还能考虑什么样的桌面操作系统?...

如果你厌倦了Windows&#xff0c;我们该选择什么样的操作系统&#xff1f;时间告诉我们&#xff0c;任何事物都不会一成不变&#xff0c;当我们厌倦了Windows那天到来&#xff0c;不妨考虑换个操作系统&#xff0c;即便Windows操作系统在市场依然如日中天&#xff0c;旧的不去新…

【LeetCode笔记】234. 回文链表(Java、快慢指针、链表)

文章目录题目描述思路 & 算法题目描述 写这道题前最好把206.翻转链表 写了有空间复杂度的话都好说&#xff0c;不管是新建链表、还是用字符串equals都好做。 思路 & 算法 快慢指针&#xff1a; 快指针找终点&#xff0c;慢指针反转前半个链表快指针回到慢指针的位…

vs2010 编译linux,VS2010 Boost编译安装

2.解压缩到D:\boost 目录下3.编译bjam(1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮&#xff0c;指向“所有程序”&#xff0c;指向“Microsoft Visual Studio 2010”&#xff0c;指向“Visual Studio tools(工具)”&#xff0c;然后单击“Visual Studio 2010 comma…

【LeetCode笔记】200. 岛屿数量(Java、DFS)

文章目录题目描述代码 & 思路更新代码题目描述 直接毁岛&#xff01;每次发现一个岛&#xff0c;ans&#xff0c;然后直接把整个岛毁了&#xff08;感染&#xff09;直到最后&#xff0c;找出所有岛&#xff0c;此时地图上全都是’0’ 代码 & 思路 每次找到一个岛&…

linux统计代码注释率,统计代码注释率

#!/bin/bash#program:# 分析.c,.cpp文件,计算文件行总数&#xff0c;代码行总数&#xff0c;注释行总数&#xff0c;空白行总数&#xff0c;代码注释率# 注释类型&#xff1a;# (1)行注释"//这里是注释内容"# (2)块注释"/*这里是注释内…

【LeetCode笔记】155. 最小栈(Java、栈)

文章目录题目描述思路 & 代码更新版题目描述 用空间换时间的经典例子&#xff0c;唯一要解决的地方就是 getMin() 如何实现常数检索&#xff08;貌似也是面试常考题&#xff09; 思路 & 代码 既然想快&#xff0c;那就要付出空间的代价用什么空间可以实现&#xff…

linux win7 默认启动,请教:我的grub.cfg里面的内容如下,请教怎样改代码才能让WIN7设为默认启动...

请教&#xff1a;我的grub.cfg里面的内容如下&#xff0c;请教怎样改代码才能让WIN7设为默认启动发布时间:2011-09-24 15:43:24来源:红联作者:baiguanglin## DO NOT EDIT THIS FILE## It is automatically generated by grub-mkconfig using templates# from /etc/grub.d and s…

【LeetCode笔记】198. 打家劫舍(Java、动态规划)

文章目录题目描述思路 & 代码更新版题目描述 好家伙&#xff0c;真是一道不符合社会主义价值观的题目不过我们还是要把这道题做了&#xff0c;而且还得用上动态规划 思路 & 代码 首先&#xff0c;不能打劫相邻然后&#xff0c;房屋都是非负整数&#xff08;讲道理&…

【LeetCode笔记】617. 合并二叉树(Java、DFS、二叉树)

文章目录题目描述思路 & 代码更新版题目描述 貌似是面试高频题&#xff0c;显而易见的递归。 思路 & 代码 合并两棵树&#xff0c;先不考虑特殊情况&#xff0c;可以理解成&#xff1a;根结点合并&#xff0c;然后各自的左右子树继续进行合并操作。那么递归返回值肯…

linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)

我正在尝试用简单的方法编写测试Ada.Text_IO.Put.为简单起见,这是一个我想测试的组合方法:procedure Say_Something isbeginPut("Something.");end Say_Something;在我的AUnit测试中,我有:procedure Test_Put (T : in out Test) ispragma Unreferenced (T);use Ada.T…

【LeetCode笔记】226. 翻转二叉树(Java、递归)

文章目录题目描述代码 & 思路更新版题目描述 感觉和合并二叉树类似&#xff0c;都是很好进行递归的问题 代码 & 思路 翻转当前结点的左、右结点对当前结点的左、右结点进行翻转函数【自底向上】 /*** Definition for a binary tree node.* public class TreeNode …

virtualbox linux 分辨率,终于搞定了VirtualBox的ubuntu分辨率问题

曾经装了ubuntu&#xff0c;但是觉得和windows切换太麻烦了&#xff0c;要重启机器&#xff0c;导致的结果是linux装上了总是不用。这次决定使用虚拟机&#xff0c;因为我用ubuntu就是ssh一下实验室的服务器&#xff0c;所以对性能没什么要求。在所里的时候看到祝师兄总用vmwar…

【LeetCode笔记】160. 相交链表(Java、链表)

文章目录题目描述思路 & 代码题目描述 感谢这道题&#xff0c;让我更加了解到Dalao们思路的nb主要是满足空间复杂度O(1)。否则用哈希表不难实现。 思路 & 代码 有相交结点的情况下&#xff0c;可以找到这么一个等式&#xff1a; // 假设链表长度为m&#xff0c;n&…

linux 离线安装nfs,ubuntu 上离线安装包制作与安装之NFS搭建

在Ubuntu上离线搭建NFS服务器一、制作离线软件包在联网且环境与你相同的电脑上 制作离线软件包注&#xff1a;先查看有没有安装nfs-utils的安装包 命令&#xff1a;# rpm -q nfs-utils1、下载软件所需deb包#sudo apt-get install nfs-kernel-server下载后安装包在/var/cache/ap…

【LeetCode笔记】152. 乘积最大子数组(Java、动态规划)

文章目录题目描述思路 & 代码更新版题目描述 考虑正数、负数和0的情况 思路 & 代码 既然是使用的动态规划&#xff0c;那么有以下几点&#xff1a; 维护什么&#xff1a;维护iMax和iMin&#xff0c;分别代表包含当前值的子数组的最大乘积 & 最小乘积什么时候转…

Linux安装winetim简单教程,[转载]wine安装最新版TIM

[版权声明&#xff1a;本文为转载&#xff0c;并按照个人实际操作步骤替换为了TIM安装&#xff0c;原文为QQ安装过程。]1. 安装wine本次教程只需要安装最新版本的wine&#xff0c;并不需要winetricks、wine-mono、wine-gecko等其他插件&#xff0c;目前经实际测试发现只运行Win…

【LeetCode笔记】283. 移动零(Java)

文章目录题目描述思路 & 代码更新版题目描述 原地操作 & 减少操作次数&#xff1a;不能直接只拷非零数&#xff0c;也不要每次都一个个推动整个数组 思路 & 代码 维护一个noZeroNums&#xff0c;代表当前循环遇到的非0数的数量第一趟先不管0的数量&#xff0c;…

c语言线程不安全错误定位,C语言中的线程安全可破坏事件触发类#

最近,我被要求实现一个类作为选择过程的一部分。我按要求做了这个节目。但是,我考试不及格。我真的很想知道我的解决方案出了什么问题。任何帮助都非常感谢。问题和我的解决方案如下实现一个线程安全类,该类在构造过程中每秒触发一个事件。需要有一个函数来查找经过的秒数。这个…