首页 » 网站建设 » php求幂数技巧_从易到难6个代表性编程问题你敢寻衅吗附解答筹划

php求幂数技巧_从易到难6个代表性编程问题你敢寻衅吗附解答筹划

访客 2024-12-10 0

扫一扫用手机浏览

文章目录 [+]

图源:Unsplash

我们的时期,是直面寻衅的克难时期,每个人都有每个人的难题。

php求幂数技巧_从易到难6个代表性编程问题你敢寻衅吗附解答筹划

前不久,罗振宇在“2019-2020韶光的朋友跨年演讲”中提到:直面寻衅、躬身入局者 皆为我辈。

php求幂数技巧_从易到难6个代表性编程问题你敢寻衅吗附解答筹划
(图片来自网络侵删)

他在演讲中借鉴曾国藩曾讲过一个故事,来阐明他所提出的说法。

这个故事的大概内容是:两个挑重担的人相遇在南方屯子狭窄的田埂上,谁都不愿意让路,这时候来了一个察看犹豫者,自己跳到了水田里,对个中一位说,来,把担子交给我,我替你挑一下子,你侧身过去。

这个天下上有多少事情看似根本无解,实在只缺一个契机,便是你自己把自己放进去,置身个中。

作为程序员,编程既是我们的武器,也是我们的伙伴,既是一个寻衅,也是一次机遇,它来帮助我们办理问题,同时也推动我们不断演习、提高自己的能力。

本文共列出6个编程问题,它们来自几个包含编程问题的网站。
此清单中的问题是根据办理的难易程度进行排序的——也便是说,第一个问题是最随意马虎办理的,而第六个问题是最难办理的。
你能办理所有问题吗?

文末供应了利用PHP办理这些问题的方案。
可以选择自己喜好的编程措辞来办理这些问题。

祝你顺利办理这些问题,编程愉快!

寻衅

1. 加减

从HackerRank供应的一个相对大略的问题开始。
这项寻衅可以视作热身。

2. 两数求和

这是一个LeetCode供应的寻衅,其评级为“随意马虎”。

3. 最大回文串乘积

此问题由Project Euler供应,它是公认的比较随意马虎办理的问题之一。
目前有超过455,000人办理了该问题。

以下是问题的描述:

4. 探求不同的幂数

这是来自Project Euler的另一个寻衅。
这比上一个问题难一些。
大约有100,000人办理了此问题。

5. Kaprekars Constant函数

如果你已经做到这一问,那么恭喜!
现在是时候开始第一个困难寻衅了。
该寻衅由Coderbyte供应。

6. 成对交流节点

这绝对是目前最困难的寻衅,此寻衅由LeetCode供应。
只管它的评级是“中等难度”,但它比Kaprekars常数更难办理。
这哀求知道链表的事情办法。

但本文就不做过多的先容了——以下是寻衅的描述:

办理方案

图源:Unsplash

1. 加减

这是一个很好的问题,让你可以从一个很大略的办理方案开始。

<?phpfunctiongetFractionals($numbers) {$length = count($numbers);$results = ['positive' => 0,'negative' => 0,'zero' => 0,];for ($i = 0; $i < $length; $i++) {if ($numbers[$i] < 0) {$results['negative'] += 1;} else if ($numbers[$i] > 0) {$results['positive'] += 1;} else {$results['zero'] += 1;}}return [$results['positive'] / $length,$results['negative'] / $length,$results['zero'] / $length];}print_r(getFractionals([1, 1, 0, -1, -1])); // [0.4, 0.4, 0.2]print_r(getFractionals([-4, 3, -9, 0, 4, 1])); // [0.5, 0.3333, 0.16667]

2. 两数求和

只管这个问题比第一个问题要难一些,但办理这个问题该当不会有多麻烦。
下面利用了一种大略的蛮力求解方法。

<?phpfunctiontwoSum($numbers, $target) {for ($i = 0; $i < count($numbers);$i++) {for ($j = $i + 1; $j <count($numbers); $j++) {if ($numbers[$j] + $numbers[$i] ===$target) {return [$i, $j];}}}}print_r(twoSum([2, 7, 11, 15], 9)); // [0, 1]print_r(twoSum([2, 7, 11, 15], 17)); // [0, 3]

3. 最大回文串乘积

下面的办理方案具有一个优点,它可以用于查找任意位数x的两个数的乘积的最大回文数。

这里添加了终止条件,避免不必要的额外循环。

<?phpfunctionisPalindrome($number) {return (string) $number ===strrev((string) $number);}function getBiggestPalindrome($digits) {$start = pow(10, $digits) - 1;$max = 0;for ($i = $start; $i > 0;$i--) {if ($i $start <= $max) {break;}for ($j = $start; $j > 0; $j--) {$product = $i $j;if ($product< $max) {break;}if ($product > $max &&isPalindrome($product)) {$max = $product;}}}return $max;}echo getBiggestPalindrome(2); // 9009echo getBiggestPalindrome(3); // 906609, which is 993 913

4. 探求不同的幂数

通过蛮力的方法办理了这个问题。

将每个结果添加到数组,然后从数组中删除重复项。
末了一步是对数组进行排序。

<?phpfunctiondistinctPowers($min, $max) {$numbers = [];for ($i = $min; $i <= $max; $i++) {for ($j = $min; $j <= $max; $j++){$numbers[] = pow($i, $j);}}$unique_numbers =array_unique($numbers);sort($unique_numbers);return $unique_numbers;}echo print_r(distinctPowers(2, 5), 1); // [4, 8, 9, 16, 25, 27, 32, 64, 81,125, 243, 256, 625, 1024, 3125]echo print_r(count(distinctPowers(2, 100)), 1); // 9183 distinct terms

5. Kaprekars Constant函数

Kaprekars Constant函数问题有点难办理。
这是列表中第一个须要递归才能办理的问题。

functionKaprekarsConstant($number, $numberOfIterations = 1) {$number = (string) $number;if (strlen($number) < 4) {for ($i = strlen($number); $i < 4;$i++) {$number .= '0';}}$asc = str_split($number);$desc = $asc;rsort($desc);sort($asc);$asc_number = (int) implode($asc, '');$desc_number = (int) implode($desc,'');$difference = abs($asc_number -$desc_number);if ($difference !== 6174) {return KaprekarsConstant($difference,$numberOfIterations + 1);}return $numberOfIterations;}echo KaprekarsConstant(2111); // 5echo KaprekarsConstant(9831); // 7

通过所有测试用例的屏幕截图

6. 成对交流节点

我花了一段韶光才弄清楚这个问题。
办理方案中的技巧是通过引用而不是通过值通报变量。
不过,这可能须要一些韶光才能理解。

functionswapPairs($head) {$current = &$head;while (!is_null($current->next)) {$nextValue =$current->next->val;$temp = &$current;$temp->next->val =$temp->val;$temp->val = $nextValue;$current =&$current->next->next;}return $head;}

当然除了这些方法,还有其它方法可以办理这些编程问题,就等你的不断挖掘啦!

加油!
寻衅无极限!

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

标签:

相关文章

php字符标题技巧_PHP 字符串变量

PHP 中的字符串变量字符串变量用于包含有字符的值。在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中利用字符串,或者...

网站建设 2024-12-12 阅读0 评论0