php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行)
php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行)
一、总结
1、多复制上面写的代码,有利于检查错误
2、一层循环就解决了,前后两个指针,和大了就后指针前移,和小了就前指针后移
3、由浅入深,先写简单算法,做题的话够用就行
4、php中的PHP_INT_MAX
二、php求和为s的两个数字
题目描述
输出描述:
对应每个测试案例,输出两个数,小的先输出。
三、代码
多复制上面写的代码,有利于检查错误
<?php //算法:两层循环遍历所有情况,选取其中乘积最小的
function FindNumbersWithSum($array, $sum)
{
$ans=[];
$n=count($array);
$chengji=2100000000;
for($i=0;$i<$n;$i++){
for($j=$i+1;$j<$n;$j++){
if(($array[$i]+$array[$j]==$sum)&&($array[$i]*$array[$j]<$chengji)){
$ans[0]=$array[$i]; //1、这里写成了$i
$ans[1]=$array[$j];
$chengji=$array[$i]*$array[$j];
}
}
}
return $ans;
}
<?php function FindNumbersWithSum($array, $sum)
{
// write code here
$len = count($array);
$i=0;
$j=$len-1;
$multi = PHP_INT_MAX ;//1、php中的PHP_INT_MAX
$a=NULL;$b=NULL;
while($i<$j){ //2、这里是一层循环就解决了,前后两个指针,和大了就后指针前移,和小了就前指针后移
if($array[$i] + $array[$j] > $sum){
$j--;
}elseif(($array[$i] + $array[$j] < $sum)){
$i++;
}else{
if($multi > $array[$i]*$array[$j]){
$multi = $array[$i]*$array[$j];
$a = $array[$i];
$b = $array[$j];
}
$i++;$j--;
}
}
if($a !== NULL){
return [$a,$b]; //3、[$a,$b]
}else{
return [];
} }
php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行)的更多相关文章
- JavaScript求两个数字之间所有数字的和
这是在fcc上的中级算法中的第一题,拉出来的原因并不是因为有什么好说的,而是我刚看时以为是求两个数字的和, 很显然错了.我感觉自己的文字理解能力被严重鄙视了- -.故拉出来折腾折腾. 要求: 给你一个 ...
- 剑指offer-面试题57_1-和为s的两个数字-双指针
/* 题目: 输入一个递增数组和一个s,求和等于s的两个数组中的数字. */ /* 思路: 双指针问题. */ #include<iostream> #include<cstring ...
- 消失的两个数字(1-N缺两个数)
给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字.你能在 O(N) 时间内只用 O(1) 的空间找到它们吗? 以任意顺序返回这两个数字均可. 示例 1: 输入: [1]输出: [2,3 ...
- [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字
Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...
- [LeetCode] Add Two Numbers 两个数字相加
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- 求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法
今天面试,遇到面试官询求最大公约数.小学就学过的奥数题,居然忘了!只好回答分解质因数再求解! 回来果断复习下,常用方法辗转相除法和更相减损法,小学奥数都学过,很简单,就不细说了,忘了的话可以百度:ht ...
- [CareerCup] 2.5 Add Two Numbers 两个数字相加
2.5 You have two numbers represented by a linked list, where each node contains a single digit. The ...
- java integer对象判断两个数字是否相等
java integer对象判断两个数字是否相等,不一定对 问题发生的背景:javaweb的项目,起先,因为在java中实体类中的int类型在对象初始化之后会给int类型的数据默认赋值为0,这样在很多 ...
- 和为S的两个数字
/* * 和为S的两个数字 * 题目描述 * 输入一个递增排序的数组和一个数字S,在数组中查找两个数 * 使得他们的和正好是S,如果有多对数字的和等于S,输出两个 * 数的乘积最小的. * ...
随机推荐
- emacs 为什么找不到运行程序?
我记得前段时间有个朋友问我为什么在emacs中打不开matlab程序?明明在terminal下是能打开的,却在emacs中不行. 今天自己最终遇到了相似的问题,我今天安装racket 6.0.安装好后 ...
- js--07 编解码,eval
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- RelativeLayout-属性大全
// 相对于给定ID控件 <!--将该控件的底部置于给定ID的控件之上--> android:layout_above <!--将该控件的底部置于给定ID的控件之下--> an ...
- android图片特效处理之怀旧效果
图片特效处理系列将介绍图片的像素点的特效处理,这些物资注重的是原理.也就是说只要你知道这些算法不管是C++,VB,C#,Java都可以做出相同的特效.下面将介绍图片怀旧效果的算法.算法如下: 上面公式 ...
- js ---- 实现千位分隔符
第一种方法: var num = 1234567; var string = num.toString(); var arr = string.split('').reverse(); console ...
- 非常不错的canvas效果,线随心动
非常不错的canvas效果,下面是html代码. <!DOCTYPE html> <html> <head> <meta charset="utf- ...
- VB 宏+mysql解决EXCEL表格实现自动化处理
1.表格模板自动建立源码 Sub opp()Dim myPath$, myFile$, AK As WorkbookApplication.ScreenUpdating = FalsemyPath = ...
- [置顶]
MVC三层架构在各框架中的特征
1.从结构上分析jsp+servlet图解原理: 在基于mvc设计模式下的最原始的jsp+Servlet框架,在某种程度上是不能够达到mvc最直观的体现.当客户端发送请求到服务器时,服务器会将从客户端 ...
- wap.css
wap.css 一.总结 1.官方有教程:英语的 http://www.developershome.com/wap/wcss/ 2.wap.css :就是控制页面在手机端样式的 3.DOCTYPE ...
- Oracle学习总结(9)—— Oracle 常用的基本操作
创建用户,相当于在sqlServer中创建一个数据库 create user 用户名 identified by 密码 修改用户密码 alter user 用户名 identified by 新 ...