题目描述
给定一个长度为n的整数数组a,元素均不相同,问数组是否存在这样一个片段,只将该片段翻转就可以使整个数组升序排列。其中数组片段[l,r]表示序列a[l], a[l+1], ..., a[r]。原始数组为a[1], a[2], ..., a[l-2], a[l-1], a[l], a[l+1], ..., a[r-1], a[r], a[r+1], a[r+2], ..., a[n-1], a[n],将片段[l,r]反序后的数组是a[1], a[2], ..., a[l-2], a[l-1], a[r], a[r-1], ..., a[l+1], a[l], a[r+1], a[r+2], ..., a[n-1], a[n]。
输入第一行数据是一个整数:n (1≤n≤105),表示数组长度。第二行数据是n个整数a[1], a[2], ..., a[n] (1≤a[i]≤109)。
样例输入42 1 3 4输出输出“yes”,如果存在;否则输出“no”,不用输出引号。
样例输出yes
http://exercise.acmcoder.com/online/online_judge_ques?ques_id=1656&konwledgeId=134链接在这里。var n=read_line();
var arr=[];
var brr=read_line().split(" ");
brr.forEach(function(element){ arr.push(+element); }
);
var start=-1,end=-1;
var decre=[];
for(var i=0; i<arr.length;i++){
if(arr[i]>arr[i+1]){ start=i ; break;}
}
if (start===-1){print("yes");}
else{
for(var i=0; i<arr.length;i++){
if(arr[i]>=arr[i+1]){ decre.push(arr[i]);}
}
decre.push(arr[i]);
end=i;
var condition1=(end===arr.length-1)?true:(decre[0]<=arr[end+1]);
var condition2=(start===0)?true:(decre[decre.length-1]>=arr[start-1]);
if(condition1&&condition2) {print("yes");}
else {print("no");}}谁能看看是为什么。。
给定一个长度为n的整数数组a,元素均不相同,问数组是否存在这样一个片段,只将该片段翻转就可以使整个数组升序排列。其中数组片段[l,r]表示序列a[l], a[l+1], ..., a[r]。原始数组为a[1], a[2], ..., a[l-2], a[l-1], a[l], a[l+1], ..., a[r-1], a[r], a[r+1], a[r+2], ..., a[n-1], a[n],将片段[l,r]反序后的数组是a[1], a[2], ..., a[l-2], a[l-1], a[r], a[r-1], ..., a[l+1], a[l], a[r+1], a[r+2], ..., a[n-1], a[n]。
输入第一行数据是一个整数:n (1≤n≤105),表示数组长度。第二行数据是n个整数a[1], a[2], ..., a[n] (1≤a[i]≤109)。
样例输入42 1 3 4输出输出“yes”,如果存在;否则输出“no”,不用输出引号。
样例输出yes
http://exercise.acmcoder.com/online/online_judge_ques?ques_id=1656&konwledgeId=134链接在这里。var n=read_line();
var arr=[];
var brr=read_line().split(" ");
brr.forEach(function(element){ arr.push(+element); }
);
var start=-1,end=-1;
var decre=[];
for(var i=0; i<arr.length;i++){
if(arr[i]>arr[i+1]){ start=i ; break;}
}
if (start===-1){print("yes");}
else{
for(var i=0; i<arr.length;i++){
if(arr[i]>=arr[i+1]){ decre.push(arr[i]);}
}
decre.push(arr[i]);
end=i;
var condition1=(end===arr.length-1)?true:(decre[0]<=arr[end+1]);
var condition2=(start===0)?true:(decre[decre.length-1]>=arr[start-1]);
if(condition1&&condition2) {print("yes");}
else {print("no");}}谁能看看是为什么。。
解决方案 »
- JavaScript脚本何时执行?
- 如何利用javascript实现部分页面刷新
- ie8的bug么? 为什么打印的不一样?
- ActiveWidgets 2.53 无法获得鼠标焦点
- 几段JavaScript的语句 能不能解释下什么意思 谢谢!毕业设计估计会提问 麻烦解答下
- javascript里有没有像java里Map对象一样实现键值对应存储数据的?
- 谁帮我解释下Jquery里面的ready()函数
- 急阿~~ 我不知道怎么删除表格中的一条记录(我是菜鸟)
- 急急急!!!关于网页框架中的下拉菜单的问题?
- $( "html" ).parent() 与$( "html" ).parents()的区别
- JS实现表单根据下拉框内容来判断右边表格内容是只读还是可以选择下拉框内容
- 页面点击按钮,后台开始画图并把图片返回给页面
这个是什么东西啊?我在console里一执行,出来个打印页面
arr.push(+element);
});改成for (var i = 0; i < brr.length; i++) {
arr.push(+brr[i]);
}