小美拿到了一个排列。她想知道在这个排列中,和是否是相邻的。你能帮帮她吗?
排列是指一个长度为的数组,其中 1 到每个元素恰好出现一次。
第一行输入一个正整数,代表排列的长度。
第二行输入个正整数,代表排列的元素。
第三行输入两个正整数和,用空格隔开。保证
如果和在排列中相邻,则输出"Yes"。否则输出"No"。
4 1 4 2 3 2 4
Yes
5 3 4 5 1 2 3 2
No
使用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')