首页
统计
友链
留言
Search
1
Windows下搭建Laravel开发环境~homestead
2,890 阅读
2
php解答leetcode第7题- 整数反转
2,822 阅读
3
基于php的sphinx和coreseek全文搜索,中文分词(一)
2,687 阅读
4
Laravel 安装 jwt 及基本使用
2,523 阅读
5
php解答leetcode第26题-删除排序数组中的重复项
2,015 阅读
PHP
laravel
svn
nginx
leetcode
算法
Golang
登录
Search
标签搜索
设计模式
leetcode
laravel
sphinx
coreseek
全文搜索
中文分词
compsoer
svn
centos
jwt
homestead
算法
php
yangpanyao
累计撰写
45
篇文章
累计收到
78
条评论
首页
栏目
PHP
laravel
svn
nginx
leetcode
算法
Golang
页面
统计
友链
留言
搜索到
7
篇与
leetcode
的结果
2019-12-18
php解答leetcode第26题-删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。 你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeDuplicates(nums); // 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。 for (int i = 0; i < len; i++) { print(nums[i]); } php解答 /** * @param Integer[] $nums * @return Integer */ function removeDuplicates(&$nums) { if (count($nums)== 0) return 0; $i = 0; for ($j=1; $j <count($nums); $j++) { if ($nums[$j] != $nums[$i]) { $i++; $nums[$i] = $nums[$j]; } } return $i+1; }
2019年12月18日
2,015 阅读
2 评论
0 点赞
2019-12-05
php解答leetcode第704题-二分查找
题目:二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1 提示:你可以假设 nums 中的所有元素是不重复的。n 将在 [1, 10000]之间。nums 的每个元素都将在 [-9999, 9999]之间。PHP解法:function search($nums, $target) { $i = 0; $j = count($nums); while ($i <= $j) { $mid = (int)(($i+$j)/2); if ($nums[$mid]==$target) { return $mid; }elseif ($nums[$mid] > $target) { $j = $mid -1; }else{ $i = $mid +1; } } return -1; }
2019年12月05日
1,207 阅读
0 评论
0 点赞
2019-11-13
php解答leetcode的第10题-盛最多水的容器
题目描述:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。 示例:输入: [1,8,6,2,5,4,8,3,7]输出: 49PHP解法1暴力解法/** * @param Integer[] $height * @return Integer */ function maxArea($height) { $arr_len = count($height); $maxarea = 0; for ($i=0; $i < $arr_len; $i++) { for ($j=$i+1; $j < $arr_len; $j++) { $maxarea = max($maxarea,min($height[$i],$height[$j])*($j-$i)); return $maxarea; } } }2.双指针法/** * @param Integer[] $height * @return Integer */ function maxArea($height) { $arr_len = count($height); $i = 0; $j = $arr_len -1; $maxarea = 0; while ($i < $j) { $maxarea = max($maxarea,min($height[$i],$height[$j])*($j-$i)); if ($height[$i] < $height[$j]) { $i++; }else{ $j--; } } return $maxarea; }
2019年11月13日
1,221 阅读
0 评论
0 点赞
2019-11-11
php解答leetcode的第4题-寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5PHP解答代码 function findMedianSortedArrays($nums1,$nums2) { $arrnum1 = count($nums1);//数组1长度 $arrnum2 = count($nums2);//数组2长度 $i1 = 0; $i2 = 0; $arr =[]; //合并有序数组到新数组 $arr while ($i1 < $arrnum1 || $i2 < $arrnum2) { if ($i1 < $arrnum1 && $i2 < $arrnum2) {//两个数组都没有到达末尾 if($nums1[$i1] > $nums2[$i2]){ $arr[] = $nums2[$i2]; $i2++; }else{ $arr[] = $nums1[$i1]; $i1++; } }elseif ($i1 >= $arrnum1 && $i2 < $arrnum2) {//数组1到达末尾 $arr[] = $nums2[$i2]; $i2++; # code... }elseif ($i1 < $arrnum1 && $i2 >= $arrnum2) {//数组2到达末尾 $arr[] = $nums1[$i1]; $i1++; } } //获取新数组长度 $len = count($arr); if($len % 2 == 0){ $b = $len/2; return ($arr[$b]+$arr[$b-1])/2; } else{ $c = (int)($len/2); return $arr[$c]; } }
2019年11月11日
1,252 阅读
0 评论
0 点赞
2019-10-23
php解答leetcode第7题- 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [ -231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。php解答:class Solution { /** * @param Integer $x * @return Integer */ function reverse($x) { $num=abs($x); $res=0; while($num>9){ $remainder=$num%10; $num=($num-$remainder)/10; $res=$res*10+$remainder; } $num=$res*10+$num; if($num>2147483647){ return 0; } $f=$x>0?true:false; if(!$f){ $num=-1*$num; } return $num; } }
2019年10月23日
2,822 阅读
3 评论
0 点赞
2019-09-15
php解答leetcode第14题-求最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"] 输出: "fl"示例 2:输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。class Solution { /** * @param String[] $strs * @return String */ function longestCommonPrefix($strs) { if (empty($strs)) { return ""; } $res=[]; foreach ($strs as $k => $v) { $res[]=str_split($v); } $length=count($res); $firstarray=$res[0]; $len=count($firstarray); for ($i=0; $i <$len; $i++) { for ($n=0; $n<$length; $n++) { if ($firstarray[$i] != $res[$n][$i]) { //无相等 返回空 if ($i==0) { return ""; } //for循环查找最长公共前缀 return substr($strs[0],0,$i); } } //全部相等 返回 数组 1 if ($i==$len-1) { return $strs[0]; } } } }
2019年09月15日
1,421 阅读
0 评论
0 点赞
2019-09-09
php解答leetcode第1题-两数之和
题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] php解法: function twoSum($nums, $target) { $length=count($nums); for ($i=0; $i <$length; $i++) { for ($j=$i+1; $j <$length; $j++) { if ($nums[$i] +$nums[$j] == $target) { return [$i,$j]; } } } }
2019年09月09日
1,535 阅读
0 评论
0 点赞