首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法-数组中出现次数超过一半的数字的PHP实现

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。...两种方式: 1.定义一个新数组arr,遍历数组给arr赋值,arr[元素]=出现的次数 2.排序下arr,取第一个的key和value,key是目标元素,value是出现次数,验证下后返回 3.时间复杂度是...O(n) 空间上会新创建个数组 1.定义变量e代表出现次数最多的元素,变量count用于判断出现次数用 2.遍历数组,当前元素与e比较,相同的count++,不同的count--,count为0时当前元素覆盖...e 3.遍历数组验证e所出现的次数有没有超过一半 4.时间复杂度O(n) 空间复杂度O(n) e,count=1 for i=1;i<arr.length;i++ if arr[i]==e...php $arr=array(1,2,3,2,2,2,5,4,2); $e=MoreThanHalfNum_Solution($arr); var_dump($e); function MoreThanHalfNum_Solution

43620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP的数组排序函数

    PHP 的数组排序函数 ---- 特别注意:以下函数都是直接修改原数组 序号 函数 描述 1 sort() 对数组进行升序排列 2 rsort() 对数组进行降序排列 3 asort() 根据键值,对关联数组进行升序排列...4 arsort() 根据键值,对关联数组进行降序排列 5 ksort() 根据键名,对关联数组进行升序排列 6 krsort() 根据键名,对关联数组进行降序排列 2....使用示例 ---- sort():修改原数组,对键值进行升序排列,重新赋予键名 $arr = [4, 1, 5, 3, 2]; rsort():修改原数组,对键值进行降序排列,删除原键名 $arr =...[4, 1, 5, 3, 2]; asort():修改原数组,根据键值对数组单元进行升序排列,保留键名 $arr = [4, 1, 5, 3, 2]; arsort():修改原数组,根据键值对数组单元进行降序排列...,保留键名 $arr = [4, 1, 5, 3, 2]; ksort():修改原数组,根据键名对数组单元进行升序排列,保留键名 $arr = [ krsort():修改原数组,根据键名对数组单元进行降序排列

    2.1K10

    PHP 的数组

    数组就是一组数据的集合,把一系列数据组织起来。如果变量是存储单个值的容器,那么数组就是存储多个值的容器。数组每个实体包含一个键和一个值。 PHP的数组概念和python的元组和字典类似。...PHP的索引数组对应python的元组,PHP的关联数组对应python的字典。...本文包含 数组声明 数组输出 多维数组 遍历数组 字符串和数组的转换 统计数组中元素的个数 查询数组中指定的元素 获取数组中最后一个元素 向数组中添加元素 删除数组中重复的元素 1....统计数组中元素的个数:count()函数统计数组中元素的个数。...查询数组中指定的元素:array_search()函数用于在数组中搜索给定的值,找到后返回键值,否则返回false,在php4.2.0之前没找到会返回null。

    6.3K51

    学习PHP中国际化地数字格式处理

    学习PHP中国际化地数字格式处理 不知道大家有没有了解过,对于数字格式来说,西方国家会以三位为一个进位,使用逗号来分隔。比如,12345678,用标准的格式来表示的话就是 12,345,678 。...其实在之前的文章中我们就已经接触过一点这方面的知识,学习PHP中的国际化功能来查看货币及日期信息,今天就来详细的学习一遍。至于为什么要格式化数字、货币这些内容呢?我们将在文章讲解中逐一说明。...数字标准格式 首先还是看我们开头介绍的标准数字格式。...我们使用 setPattern() 方法来定义了一个带 kg 的格式规则,很显示,我们是需要一个表示重量的格式。然后仅保留一位小数点,不需要分隔符号。...、货币格式 我们能够将数字进行格式化地输出,输出之后的内容因为增加了分隔符之类的内容,所以都会转成字符串,那么,我们能不能把已经格式化过的标准数字字符再转回数字类型呢?

    1.1K20

    数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。...例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 解题思路 最简单的就是用一个数组或者哈希表来存储已经遍历过的数字,但是这样需要开辟额外的空间。...如果题目要求不能开辟额外的空间,那我们可以用如下的方法: 因为数组中的数字都在0~n-1的范围内,所以,如果数组中没有重复的数,那当数组排序后,数字i将出现在下标为i的位置。...现在我们重排这个数组,从头到尾扫描每个数字,当扫描到下标为i的数字时,首先比较这个数字(记为m)是不是等于i。...如果是,则接着扫描下一个数字;如果不是,则再拿它和m 位置上的数字进行比较,如果它们相等,就找到了一个重复的数字(该数字在下标为i和m的位置都出现了),返回true;如果它和m位置上的数字不相等,就把第

    2.1K30

    数组中的重复数字

    """描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。...例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。...存在不合法的输入的话输出-1数据范围:0\le n \le 10000 \0≤n≤10000进阶:时间复杂度O(n)\O(n) ,空间复杂度O(n)\O(n)示例1输入:[2,3,1,0,2,5,3]复制返回值...:2复制说明:2或3都是对的数据范围:0\le n \le 10000 \0≤n≤10000进阶:时间复杂度O(n)\O(n) ,空间复杂度O(n)\O(n)"""# @param numbers int...整型一维数组# @return int整型#from typing import Listclass Solution: def duplicate(self , numbers: List[int

    1.4K10

    PHP的多维数组排序

    熟悉PHP的小伙伴都知道有很多内置函数可以对数组进行排序操作或者自定义一些排序方法(冒泡)等等。 PHP排序函数 sort() 函数用于对数组单元升序排序。...ksort() 函数用于对数组单元按照键名升序排序。 krsort() 函数用于对数组单元按照键名降序排序。 以上函数都针对的是一维数组的排序。...=> 94] ]; 根据id进行升序排序 // 获取数组中id值 $ids = array_column($sortArr, 'id'); // 第一个参数就是需要排序key的值,传入后相当于先对 $ids...进行排序,然后根据排序后的$ids的key重新构建需要排序的$sortArr array_multisort($ids, SORT_ASC, $sortArr); print_r($sortArr);...key值排序 使用上一个例子的数组,并且多增加一个排序key。

    3.7K10

    查找数组中重复的数字

    题目来源于《剑指Offer》中的面试题3:找出数组中重复的数字。   // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。...数组中某些数字是重复的,但不知道有几个数字重复了,   // 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。...例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},   // 那么对应的输出是重复的数字2或者3。        ...: (输出) 数组中的一个重复的数字 // 返回值: // true - 输入有效,并且数组中存在重复的数字 // false - 输入无效,或者数组中没有重复的数字...\n"); } // 重复的数字是数组中最小的数字 void test1() { int numbers[] = { 2, 1, 3, 1, 4 }; int duplications

    4K60
    领券