第三天|59.螺旋矩阵II,203.移除链表元素(ACM模式)

文章讲解:59.螺旋矩阵II
状态:学习

一、59.螺旋矩阵II

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:在这里插入图片描述

输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]

算法:数学模拟
难点:确定循环不变量
思路:
首先要循环结束的条件,我们可以通过n=4,n=5进行模拟,
while的条件可以设置为来sum<=n*n
其次要提前确定循环不变量,即循环区间,分为区间左闭右闭,左闭右开两种
对于这一道题目来说,两个都可以,作者就选择了左闭右闭;

import java.util.Scanner;
public class exam {
    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            int n=sc.nextInt();
            int[][] num=new int[n][n];
            int count=1;
            int up=0,left=0,right=n-1,down=n-1;
            while(count<= n*n)
            {
                //顶层
                for(int i=left;i<=right;i++){
                    num[up][i]=count++;}
                up++;
                for(int i=up;i<=down;i++){
                    num[i][right]=count++;}
                right--;
                for(int i=right;i>=left;i--){
                    num[down][i]=count++;}
                down--;
                for(int i=down;i>=up;i--){
                    num[i][left]=count++;}
                left++;

            }
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                {
                    System.out.print(num[i][j]+" ");
                }

    }

}

二、203.移除链表元素

给你一个链表的头节点 head 和一个整数 val ,
请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点在这里插入图片描述
一道简单链表题
链表的删除就是逻辑删除,
pre.next=p.next
在这里插入图片描述

import java.util.Scanner;
class ListNode{
     int val;
     ListNode next;
     ListNode(int val){
         this.val=val;

     }
}

public class exam {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int val=sc.nextInt();
            ListNode head=new ListNode(0);
            ListNode pre=head;
            ListNode p=head;
            for(int i=1;i<7;i++){
                ListNode node=new ListNode(i);
                node.next=p.next;
                p.next=node;
            }
            while(p!=null){
                if(p.val==val)
                {
                    pre.next=p.next;
                }else{
                    pre=p;
                }
                p=p.next;
            }
            ListNode w=head;
            while(w!=null){
                System.out.println(w.val);
                w=w.next;
            }

    }

}

总结

59.螺旋矩阵II:就是简单数学模拟,提前确定循环不变量,循环结束条件,顶层,右边,底层,左边的顺序
203.移除链表元素:链表的删除就是逻辑上的删除,pre.next=p.next

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值