代码片段2

f603918fa0ec08fa929f797b57ee3d6d54fbda4b.jpg

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。数组不会以0开头。

class Solution {
    /**
     * @param Integer[] $digits
     * @return Integer[]
     */
    function plusOne($digits) {
        $count = count($digits);
        for($i=$count;$i>0;$i--){
            $plus = $digits[$i-1] + 1;
            $ex = floor($plus/10);
            $digits[$i-1] = $plus % 10;
            if($ex == 0){
                break;
            }else if($i == 1){
                array_unshift($digits,$ex);
            }
        }
        return $digits;
    }
}

对角线遍历,给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素

!代码还有点小问题

class Solution
{

    /**
     * @param Integer[][] $matrix
     * @return Integer[]
     */
    function findDiagonalOrder($matrix)
    {
        if (!$matrix) {
            return [];
        }
        $re = [];
        $m = count($matrix);
        $n = count($matrix[0]);
        $_m = max($m, $n);
        $num = $m + $n - 1;
        for ($i = 0; $i < $num; $i++) {
            if ($i < $m) {
                if ($i % 2 == 0) {
                    for ($j = 0; $j < $i + 1; $j++) {
                        $re[] = $matrix[$i - $j][$j];
                    }
                }
                else {
                    for ($j = 0; $j < $i + 1; $j++) {
                        $re[] = $matrix[$j][$i - $j];
                    }
                }
            }
            else {
                if ($i % 2 == 0) {
                    for ($j = $i + 1 - $_m; $j < $_m; $j++) {
                        $re[] = $matrix[$i - $j][$j];
                    }
                }
                else {
                    for ($j = $i + 1 - $_m; $j < $_m; $j++) {
                        $re[] = $matrix[$j][$i - $j];
                    }
                }
            }
        }
        foreach ($re as $k => $v) {
            if ($v === null) {
                unset($re[$k]);
            }
        }
        $re = array_values($re);
        return $re;
    }
}

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

class Solution
{

    /**
     * @param Integer[][] $matrix
     * @return Integer[]
     */
    public function spiralOrder($matrix){
        $ans = [];
        if(empty($matrix)){
            return $ans;
        }
        $ans[] = $matrix[0][0];
        $up = 0;
        $down = count($matrix)-1;
        $left = 0;
        $right = count($matrix[0])-1;
        while(1){
            for ($i = 1; $i <= $right; ++$i){
                $ans[] = $matrix[$up][$i]; 
            }
            if(++$up > $down){
                break;
            }
            for($i = $up; $i<= $down; ++$i){
                $ans[] = $matrix[$i][$right];
            }
            if(--$right < $left){
                break;
            }
            for($i = $right; $i >= $left; --$i){
                $ans[] = $matrix[$down][$i];
            } 
            if(--$down < $up) {
                break; 
            }
            for($i = $down; $i >= $up; --$i) {
                $ans[] = $matrix[$i][$left];
            }
            if(++ $left > $right) {
                break;
            }
        }
        return $ans;
    }
}

杨辉三角

<?php
class Solution {
    /**
     * @param Integer $numRows
     * @return Integer[][]
     */
    function generate($numRows) {
        if($numRows <=0){
            return [];
        }
        $re = [];
        $source = [1];
        for ($i=0; $i<$numRows; $i++){
            $_arr = [];
            for ($j=0; $j<$i+1; $j++){
                $_arr[] = $source[$j-1]+$source[$j];
            }
            $re[] = $_arr;
            $source = $_arr;
        }

        return $re;
    }
}

$a = new Solution;
$re = $a->generate(5);
var_dump($re);

所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

  Previous post 一些代码片段
Next post   代码片段3

添加新评论

成功源于不懈的努力。

暗自伤心,不如立即行动。

再多一点努力,就多一点成功。

得意淡然,失意坦然;喜而不狂,忧而不伤。

海纳百川,有容乃大;壁立千仞,无欲则刚。