首页 » PHP教程 » php说话受到挑衅技巧_用最好的措辞PHP解决编程寻衅

php说话受到挑衅技巧_用最好的措辞PHP解决编程寻衅

duote123 2024-12-09 0

扫一扫用手机浏览

文章目录 [+]

编程是关于办理问题的。
在本文中,我列出了来自几个包含编程问题的网站的六个编程问题。
此清单中的问题是根据办理的难易程度进行排序的,个中最随意马虎办理的是第一名,而最难办理的是第六名。
你能搞定吗?

我在本文底部供应了用PHP编码的这些编程问题的办理方案。
您可以选择一种编程措辞来办理这些问题。

php说话受到挑衅技巧_用最好的措辞PHP解决编程寻衅

祝您好运办理这些问题,并祝您编程愉快!

php说话受到挑衅技巧_用最好的措辞PHP解决编程寻衅
(图片来自网络侵删)

问题

1.加号减号

让我们从HackerRank供应的一个相对大略的问题开始。
这项寻衅被归为热身。

2.两个数求和

LeetCode供应的寻衅被认为很随意马虎。

3.最大的回文数

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

这便是问题:

4.独特的幂

欧拉操持的另一个寻衅。
这个问题比以前的问题要难一些。
大约有100,000人办理了此问题。

5. Kaprekars Constant

如果您已经做到这一点:恭喜!
现在是开始第一个艰巨寻衅的时候了。
该寻衅由Coderbyte供应。

6.成对交流节点

到目前为止,这个绝对是最艰巨的寻衅,此寻衅由LeetCode供应。
只管它被认为是中等难度的,但我创造这个问题比Kaprekars Constant更难办理。
这须要您知道链接列表的事情办法。

但是,我们不要过分详细-这是寻衅:

办理方案

1.加号减号

让您开始真正大略的办理方案是一个非常大的问题。

<?phpfunction getFractionals($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.两个数求和

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

<?phpfunction twoSum($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位数的乘积。

我还添加了停滞条件,以避免不必要的额外循环。

<?phpfunction isPalindrome($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.独特的幂

我通过暴力路线办理了独特的幂问题。

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

<?phpfunction distinctPowers($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问题很难办理。
这是此列表中的第一个问题,须要递归才能办理。

function KaprekarsConstant($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

A screenshot of passing all test cases

6.成对交流节点

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

function swapPairs($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;}

(本文翻译自Daan的文章《Do You Know How to Solve These Programming Problems?》,参考:https://medium.com/better-programming/do-you-know-how-to-solve-these-programming-problems-18d04defc05e)

标签:

相关文章

phpbmp数组技巧_浅析 BMP 位图

在windows下,任何格式的图片文件(包括视频播放)都要转化为位图才能显示出来,各种各样格式的图片文件也都是在位图格式的根本上采...

PHP教程 2024-12-11 阅读0 评论0