笔试强训——day05

一、杨辉三角杨辉三角icon-default.png?t=M85Bhttps://leetcode.cn/problems/pascals-triangle/

1、解题思路

①首先选取ArrayList动态开辟空间,list代表整个杨辉三角其中里面有包含了杨辉三角的每一行所以类型为List,list1道标杨辉三角的第一行也就是只有一个元素1

②然后是创建杨辉三角的每一行(除已经创建好的第一行以外),每一行的第一个依旧是1,然后创建一链表pre来保存当前链表的上一行

③从第二个加点开始白能力每一行的数据,该数据等于上一行紧挨着的两个数据之和,下图可以考到在坐标(2,1)的数据等于左边(2-1,1-1)和数据(2-1,1)的和

④由此可以等到公式(i,j)=(i-1,j-1)+(i-1,j)

⑤最后再把i=j位置的元素赋值成1,即可

笔试强训——day05_第1张图片

2、详细代码

public List> generate(int numRows) {
        List> list=new ArrayList<>();
        List list1=new ArrayList<>();
        list1.add(1);
        list.add(list1);
        for (int i = 1; i  list2=new ArrayList<>();
            list2.add(1);
            List pre=list.get(i-1);
            for (int j = 1; j 

 二、计算字符串的数字和计算字符串的数字和icon-default.png?t=M85Bhttps://leetcode.cn/problems/calculate-digit-sum-of-a-string/

1、思路解析

①这里的while相当于递归

②先创建一个变量保存字符串的长度。因为每一次 的while都会改变字符串的长度

②最外层的循环相当于把整个数组分成没k个元素一组的新数组

③最里层的循环相当于把分好的每一组中的每一个元素加起来

④最后通过StringBuilder的append方法尾插进新建的sb中

2、详细代码

public String digitSum(String s, int k) {
        while (s.length() > k) {
            int n = s.length();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < n; i += k) {
                int sum = 0;
                for (int j = 0; j < k && i + j < n; j++) {
                    sum += s.charAt(i + j) - '0';
                }
                sb.append(sum);
            }
            s = sb.toString();
        }
        return s;
    }

 三、回文链表回文链表icon-default.png?t=M85Bhttps://leetcode.cn/problems/palindrome-linked-list-lcci/

1、思路解析

①先遍历链表把每个每个节点放到新建的顺序表中

②然后通过快慢指针遍历顺序表,判断是否为回文array.get(i).equals(array.get(j))

2、详细代码

public boolean isPalindrome(ListNode head) {
            if (head==null||head.next==null){
                return true;
            }
          List array=new ArrayList<>();
            ListNode cur=head;
            while (cur!=null){
                array.add(cur.val);
                cur=cur.next;
            }
            int i=0;
            int j=array.size()-1;
            while (i

你可能感兴趣的:(java,开发语言,leetcode)