
算法
虾米俊
这个作者很懒,什么都没留下…
展开
-
Leetcode 1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same ele原创 2017-04-13 18:46:58 · 169 阅读 · 0 评论 -
数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。<?phpfunction MoreThanHalfNum_Solution($numbers){ //计算数组中每个数字出现的次数 $arr=array_count_val原创 2017-07-10 18:45:13 · 143 阅读 · 0 评论 -
数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。function GetNumberOfK($data, $k){ if (in_array($k,$data)){ $arr=array_count_values($data); //返回数字k出现的次数 return $arr[$k]; }else{ retu原创 2017-07-12 18:07:15 · 155 阅读 · 0 评论 -
和为S的连续正数序列
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述:输出所有和为S的连续正数序列。序列内原创 2017-07-11 16:15:15 · 156 阅读 · 0 评论 -
和为S的连续正数序列
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述:输出所有和为S的连续正数序列。序列内原创 2017-07-11 16:39:11 · 174 阅读 · 0 评论 -
和为S的两个数字
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述:对应每个测试案例,输出两个数,小的先输出。function FindNumbersWithSum($array, $sum){ //存放和为sum的数组 $sumArray=array(); for ($i=0;$i$原创 2017-07-12 18:08:08 · 156 阅读 · 0 评论 -
PHP实现排列组合
<?php// 阶乘function factorial($n){ return array_product(range(1,$n));}// 排列数function A($n,$m){ return factorial($n)/factorial($n-$m);}// 组合数function C($n,$m){ return A($n,$m)/factorial(转载 2017-07-10 14:50:38 · 1985 阅读 · 0 评论 -
构建乘积数组
给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。<?phpfunction multiply($numbers){ $b=array(); //若原数组0个数大于1个,则用0填充b数组 if (array_count_values($n原创 2017-08-08 11:21:38 · 184 阅读 · 0 评论 -
左旋转字符串
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!function LeftRotateString($str, $n){ //字符串转换原创 2017-08-08 11:22:16 · 162 阅读 · 0 评论 -
翻转单词顺序列
例如,“student. a am I”。把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。function ReverseSentence($str){ $arr=explode(' ',$str); return implode(' ',array_reverse($arr));}原创 2017-07-10 18:48:01 · 148 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。function reOrderArray($array){ $a=array(); $b=array(); foreach ($array as $value){ if (原创 2017-07-11 15:23:56 · 142 阅读 · 0 评论 -
Leetcode 27. Remove Element
Given an array and a value, remove all instances of that value in place and return the new length.Do not allocate extra space for another array, you must do this in place with constant memory.The order原创 2017-04-20 15:12:03 · 150 阅读 · 0 评论 -
第一个只出现一次的字符
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置<?phpfunction FirstNotRepeatingChar($str){ if (!isset($str)||empty($str)){ return -1; } //字符串转为数组 $arr=str_split($str);原创 2017-07-10 17:02:55 · 180 阅读 · 0 评论 -
整数中1出现的次数(从1到n整数中1出现的次数)
1~13中包含1的数字有1、10、11、12、13,1共出现6次。求任意非负整数区间中1出现的次数。链接:https://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6?toCommentId=567854 来源:牛客网<?phpfunction NumberOf1Between1AndN_Solution($n原创 2017-07-10 18:33:42 · 406 阅读 · 0 评论 -
把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。<?phpfunction PrintMinNumber($numbers){ $result=array(); //全排列,每一种为一个数组 $arr=arrangement($numbers,co原创 2017-07-10 18:38:36 · 220 阅读 · 0 评论 -
最小的K个数
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。<?phpfunction GetLeastNumbers_Solution($input, $k){ // write code here if ($k>count($input)){ return array(); } sort原创 2017-07-10 18:40:51 · 159 阅读 · 0 评论 -
非递归实现斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39。有时间内存限制<?phpfunction Fibonacci($n){ $a=1; $b=1; if ($n==0){ return 0; }elseif ($n==1||$n==2){ return 1; } else{原创 2017-07-11 15:17:05 · 246 阅读 · 0 评论 -
用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。//两个栈global $arr1;$arr1=array();global $arr2;$arr2=array();function mypush($node){ global $arr1; array_push($arr1,$node);}function mypop(原创 2017-07-11 15:19:45 · 164 阅读 · 0 评论 -
替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。function replaceSpace($str){ $arr=explode(' ',$str); return implode('%20',$arr);}添加笔记原创 2017-07-10 18:50:47 · 164 阅读 · 0 评论 -
滑动窗口的最大值
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {原创 2017-08-08 11:21:04 · 265 阅读 · 0 评论