ACM模式下的输入输出格式练习
Posted 3 ERROR(s)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM模式下的输入输出格式练习相关的知识,希望对你有一定的参考价值。
前言
我们在写算法题的时候都会遇到ACM模式和智能模式(核心代码模式),而一般的竞赛和面试都是ACM模式。
- ACM模式就是自己构造输入数据格式,把需要处理的容器填充好,OJ不会给你任何代码,最后也要控制我们的返回数据格式。
- 核心代码模式就是把要处理的数据都已经放在容器中了,直接写我们的业务逻辑就好了。
如果大家从一开始就在LeetCode上学习算法的话突然参加比赛或者拿到面试题就会很不适应,我第一遇见就一脸懵逼,不过掌握输入输出格式可比做算法题要简单多了!
一、数组的输入格式
public static void main(String[] args)
Scanner sc=new Scanner(System.in);
System.out.println("请输入有几个元素");
int n=sc.nextInt();
int[] nums=new int[n]; print默认空格作为分隔符
System.out.println("请输入咱们的数组");
for(int i=0;i<n;i++) 循环给数组赋值
nums[i]=sc.nextInt();
System.out.println(Arrays.toString(nums)); 输出数组
二、链表的输入格式
public class Main
static class LinkNode 定义节点类
int val;
LinkNode next;
public LinkNode(int val)
this.val=val;
public static void main(String[] args)
LinkNode head=new LinkNode(0);//定义头结点
LinkNode p=head; //定义一个临时变量指向头结点
Scanner sc=new Scanner(System.in);
System.out.println("请输入有几个元素");
int n=sc.nextInt();
int[] nums=new int[n];
System.out.println("请输入咱们的数组");
for(int i=0;i<n;i++)
nums[i]=sc.nextInt();
//System.out.println(Arrays.toString(nums));
for(int i=0;i<nums.length;i++) //尾插法插入节点
p.next=new LinkNode(nums[i]);
p=p.next;
上半部分是输入格式,用了一个数组来输入的
======================================================================================
LinkNode nx =getKthFromEnd(head, 3);
System.out.println(nx.val);
这部分是链表的输出
while(nx!=null) 我们返回的是一个头结点,所以用它遍历整个链表就可以了
if(nx.next==null)
System.out.println(nx.val);
return;
else
System.out.println(nx.val+" ");
nx=nx.next;
=======================================================================================
public static LinkNode getKthFromEnd(LinkNode head, int k)
LinkNode fast=head;
LinkNode slow=head;
if(k<=0)
return head;
int n=k-1; 这是我实现业务的方法,返回了一个slow节点
while(n>0)
fast=fast.next;
n--;
while(fast.next!=null)
fast=fast.next;
slow=slow.next;
return slow;
持续更新,未完待续。。。。。。。。。。。。。。。。
以上是关于ACM模式下的输入输出格式练习的主要内容,如果未能解决你的问题,请参考以下文章
python3 牛客网:OJ在线编程常见输入输出练习(ACM模式)