排列是指一个长度为
第一行输入一个正整数,代表排列的长度。
第二行输入个正整数
,代表排列的元素。
第三行输入两个正整数和
,用空格隔开。
保证
如果和
在排列中相邻,则输出"Yes"。否则输出"No"。
4 1 4 2 3 2 4
Yes
5 3 4 5 1 2 3 2
No
方法一:直接秒了
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 排列的长度
int n = in.nextInt();
// 存储n个正整数
int nums[] = new int[n];
for (int i = 0; i < n; i ++ ) {
nums[i] = in.nextInt();
}
int x = in.nextInt();
int y = in.nextInt();
int xIndex = -1;
int yIndex = -1;
for (int i = 0; i < n; i++) {
if (nums[i] == x) {
xIndex = i;
} else if (nums[i] == y) {
yIndex = i;
}
}
int padding = Math.abs(xIndex - yIndex);
if (padding == 1) {
System.out.println("Yes");
} else {
System.out.println("No");
}
in.close();
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 排列的长度
int n = in.nextInt();
// 存储n个正整数的index
int numIndexs[] = new int[n + 1];
for (int i = 1; i < n + 1; i ++ ) {
numIndexs[in.nextInt()] = i;
}
int x = in.nextInt();
int y = in.nextInt();
int padding = Math.abs(numIndexs[x] - numIndexs[y]);
if (padding == 1) {
System.out.println("Yes");
} else {
System.out.println("No");
}
in.close();
}
} 使用mapm来存放位置,题目说了数据不会重复。
输出时只需要看位置是否相邻即可。
运行时间:685ms 占用内存:16864
package main
import "fmt"
func main() {
var n, a, x, y int
_, _ = fmt.Scan(&n)
m := make(map[int]int)
for i := 0; i < n; i++ {
_, _ = fmt.Scan(&a)
m[a] = i
}
_, _ = fmt.Scan(&x, &y)
if (m[x] == (m[y] + 1)) || (m[x] == (m[y] - 1)) {
fmt.Print("Yes")
} else {
fmt.Print("No")
}
return
}
Scanner in = new Scanner(System.in);
int n = in.nextInt();
HashMap map = new HashMap();
while(n-->0){
int a = in.nextInt();
map.put(a, n);
}
// String[] c = in.nextLine().split(" ");
// int x = Integer.parseInt(c[0]);
// int y = Integer.parseInt(c[1]);
int x = in.nextInt();
int y = in.nextInt();
int xIndex = map.get(x);
int yIndex = map.get(y);
if (Math.abs(xIndex-yIndex)==1)
System.out.printf("Yes");
else
System.out.printf("No");
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
//position[i]代表数字i出现的位置
int[] position = new int[n + 1];
for (int i = 0; i < n; i++) {
position[in.nextInt()] = i;
}
if (Math.abs(position[in.nextInt()] - position[in.nextInt()]) == 1) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
} #include <iostream>
using namespace std;
int main()
{
int x,y,n;
cin>>n;
int array[n];
for(int i = 0;i<n;i++)
{
cin>>array[i];
}
cin>>x>>y;
for(int i = 0;i<n;i++)
{
if(array[i] == x||array[i] == y)
{
if(array[i] == x&&array[i+1] == y)
{
cout<<"Yes";
return 0;
}
else if(array[i] == y&&array[i+1] == x)
{
cout<<"Yes";
return 0;
}
else
continue;
}
else
continue;
}
cout<<"No";
} def sol(n,arr,x,y): idx = arr.index(x) isNear = 'No' if idx-1>0: if arr[idx-1] == y: isNear = 'Yes' if idx+1<n: if arr[idx+1] == y: isNear = 'Yes' return isNear while 1: try: n = int(input()) arr = list(map(int,input().split())) x,y = map(int,input().split()) ans = sol(n,arr,x,y) print(ans) except: break
#include <iostream>
using namespace std;
int main() {
int n;
cin>>n;
int a[n];
int i=0;
for(;i<n;i++)
{
cin>>a[i];
}
int x,y;
cin>>x>>y;
for(i=0;i<n;i++)
{
if(x==a[i])
{
if(y==a[i+1])
{
cout <<"Yes";
}
else if(y==a[i-1])
{
cout <<"Yes";
}
else
{
cout << "No";
}
}
}
} importsys
n = sys.stdin.readlines()
num = n[1].strip().split()
dic = {}
fori in range(1,len(num)-1):
ifnum[i] not in dic:
dic[num[i]] = []
dic[num[i]].append(num[i-1])
dic[num[i]].append(num[i+1])
dic[num[0]] = [num[1]]
dic[num[-1]]=[num[-2]]
ifn[2].strip().split()[1] in dic[n[2].strip().split()[0]]:
print('Yes')
exit()
print('No')