class Solution {
public int candy(int[] ratings) {
int len = ratings.length;
int res = 0;
int[] lft = new int[len];
int[] rgt = new int[len];
lft[0] = 1;
for(int i=1 ; i<len ; i++){
if (ratings[i]>ratings[i-1])
lft[i] = lft[i-1]+1;
else
lft[i] = 1;
}
rgt[len-1] = 1;
for(int j=len-2 ; j>=0 ; j--){
if(ratings[j] > ratings[j+1])
rgt[j] = rgt[j+1]+1;
else
rgt[j] = 1;
}
for(int i=0 ; i<len ; i++){
res += Math.max(lft[i] , rgt[i]);
}
return res;
}
}
class Solution {
public int candy(int[] ratings) {
int len = ratings.length;
int res = 0;
int rgt=1;
int[] lft = new int[len];
for(int i=0 ; i<len ; i++){
if (i>0 && ratings[i]>ratings[i-1])
lft[i] = lft[i-1]+1;
else
lft[i] = 1;
}
for(int j=len-1 ; j>=0 ; j--){
if(j<len-1 && ratings[j] > ratings[j+1])
rgt++;
else
rgt = 1;
res += Math.max(lft[j] , rgt);
}
return res;
}
}
class Solution {
public void reorderList(ListNode head) {
List<ListNode> list = new ArrayList<>();
ListNode tmp = head;
while(tmp!=null){
list.add(tmp);
tmp = tmp.next;
}
int i =0 , j = list.size()-1;
while(i<j){
list.get(i).next = list.get(j);
i++;
if(i==j)
break;
list.get(j).next = list.get(i);
j--;
}
list.get(i).next = null;
}
}
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> list = new LinkedList<>();
if(matrix == null || matrix.length == 0 || matrix[0].length == 0)
return list;
int left = 0 , right = matrix[0].length-1 , top = 0 , button = matrix.length-1;
while(left<=right && top<=button){
for(int i=left ; i<=right ; i++){
list.add(matrix[top][i]);
}
top++;
for(int j = top ; j<=button ; j++){
list.add(matrix[j][right]);
}
right--;
for(int i=right ; i>=left && top<=button ; i--){
list.add(matrix[button][i]);
}
button--;
for(int j = button ; j>=top && left<=right ; j--){
list.add(matrix[j][left]);
}
left++;
}
return list;
}
}