题目的链接在这里:https://leetcode-cn.com/problems/reshape-the-matrix/
题目大意
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。一、示意图
二、解题思路
第一种方法就是暴力判断的
暴力判断
代码如下:
class Solution {
public int[] nextGreaterElements(int[] nums) {
//第一种方法就是暴力判断的
int result[]=new int[nums.length];
boolean falge;
for(int i=0;i<nums.length;i++){
falge=true;
//从第一个开始
int index=i;
int temp=-1;
//但是他还可以找到他自己前面的值 那就再继续遍历
while (index<nums.length){
//从后面开始遍历 找到第一个比他打的
if(nums[i]<nums[index]){
//赋值过去
temp=nums[index];
//变动过把flage设置一下
falge=false;
break;
}
index++;
}
//原来问题在这 上一个break之后 还是会继续下一个判断的 所以是需要对temp再控制一下
//那就是说 还需要遍历他之前的数值 那不能用这个了 只能用flag了
int index_zero=0;
while (index_zero<index&&falge){
//这里等于-1就说明 之前没有变化过
//也要继续遍历 但是是需要从第一个开始找的
if(nums[i]<nums[index_zero]){
//说明需要遍历了
temp=nums[index_zero];
break;
}
index_zero++;
}
result[i]=temp;
}
return result;
}
}