Given an integer array Arr of size N. For each element in the array, check whether the right adjacent element (on the next immediate position) of the array is smaller. If next element is smaller, update the current index to that element. If not, then  -1.
Example 1:
Input:
N = 5
Arr[] = {4, 2, 1, 5, 3}
Output:
2 1 -1 3 -1
Explanation: Array elements are 4, 2, 1, 5
3. Next to 4 is 2 which is smaller, so we
print 2. Next of 2 is 1 which is smaller,
so we print 1. Next of 1 is 5 which is
greater, so we print -1. Next of 5 is 3
which is smaller, so we print 3.  Note
that for last element, output is always 
going to be -1 because there is no element
on right.
Example 2:
Input:
N = 6
Arr[] = {5, 6, 2, 3, 1, 7}
Output:
-1 2 -1 1 -1 -1
Explanation: Next to 5 is 6 which is
greater, so we print -1.Next of 6 is 2
which is smaller, so we print 2. Next
of 2 is 3 which is greater, so we
print -1. Next of 3 is 1 which is
smaller, so we print 1. Next of 1 is
7 which is greater, so we print -1.
Note that for last element, output is
always going to be -1 because there is
no element on right.
Your Task:  
You don't need to read input or print anything. Your task is to complete the function immediateSmaller() which takes the array of integers arr and n as parameters. You need to change the array itself.
Expected Time Complexity: O(N)
Expected Auxiliary Space: O(1)
Constraints:
1 ≤ N ≤ 10^{7}
1 ≤ Arr[i] ≤ 10^{5}

Source: geeksforgeeks | Difficulty: EASY
Tags: Data structures

Starter code: #User function Template for python3

class Solution:



	def immediateSmaller(self,arr,n):

		# code here

Solutions:
class Solution:

	def immediateSmaller(self, arr, n):
		a = []
		for i in range(n - 1):
			if arr[i] > arr[i + 1]:
				a.append(arr[i + 1])
			else:
				a.append(-1)
		a.append(-1)
		for i in range(n):
			arr[i] = a[i]


class Solution:

	def immediateSmaller(self, arr, n):
		xmin = -1
		for i in range(n - 1):
			if arr[i] > arr[i + 1]:
				arr[i] = arr[i + 1]
			else:
				arr[i] = xmin
		arr[n - 1] = -1


class Solution(object):

	def immediateSmaller(self, nums, n):
		for index in range(n - 1):
			(curr, next) = (nums[index], nums[index + 1])
			nums[index] = next if curr > next else -1
		nums[-1] = -1
		return nums


class Solution:

	def immediateSmaller(self, nums, n):
		st = []
		for i in range(1, n):
			if nums[i - 1] > nums[i]:
				nums[i - 1] = nums[i]
			else:
				nums[i - 1] = -1
		nums[n - 1] = -1


class Solution:

	def immediateSmaller(self, arr, n):
		for (i, e) in enumerate(arr[:-1]):
			if arr[i + 1] < e:
				arr[i] = arr[i + 1]
			else:
				arr[i] = -1
		arr[n - 1] = -1


class Solution:

	def immediateSmaller(self, arr, n):
		for i in range(len(arr) - 1):
			if arr[i] > arr[i + 1]:
				arr[i] = arr[i + 1]
			else:
				arr[i] = -1
		arr[-1] = -1
		return arr


class Solution:

	def immediateSmaller(self, arr, n):
		l = []
		for i in range(1, n):
			if arr[i - 1] > arr[i] and i < n:
				arr[i - 1] = arr[i]
			else:
				arr[i - 1] = -1
		arr[n - 1] = -1
		return arr


class Solution:

	def immediateSmaller(self, arr, n):
		i = 0
		while i < n - 1:
			if arr[i] > arr[i + 1]:
				arr[i] = arr[i + 1]
			else:
				arr[i] = -1
			i += 1
		arr[n - 1] = -1


class Solution:

	def immediateSmaller(self, arr, n):
		lst = []
		for i in range(n - 1):
			if arr[i] > arr[i + 1]:
				lst.append(arr[i + 1])
			else:
				lst.append(-1)
		lst.append(-1)
		for i in range(n):
			arr[i] = lst[i]
		return arr


class Solution:

	def immediateSmaller(self, arr, n):
		stack = [-1]
		for i in range(n - 1, -1, -1):
			num = stack.pop()
			stack.append(arr[i])
			if arr[i] > num:
				arr[i] = num
			else:
				arr[i] = -1


class Solution:

	def immediateSmaller(self, arr, n):
		a = []
		for i in range(n - 1):
			if arr[i] > arr[i + 1]:
				a.append(arr[i + 1])
				continue
			elif arr[i] < arr[i + 1]:
				a.append('-1')
				continue
			else:
				a.append('-1')
				continue
		a.append('-1')
		arr.clear()
		for i in a:
			arr.append(i)
		return arr


class Solution:

	def immediateSmaller(self, a, n):
		for i in range(n - 1):
			if a[i] > a[i + 1]:
				a[i] = a[i + 1]
			else:
				a[i] = -1
		a[n - 1] = -1
		return


class Solution:

	def immediateSmaller(self, arr, n):
		b = arr
		for i in range(0, n - 1):
			if arr[i] > arr[i + 1]:
				b[i] = arr[i + 1]
			else:
				b[i] = -1
		b[n - 1] = -1
		return b


class Solution:

	def immediateSmaller(self, arr, n):
		ans = []
		for i in range(n):
			if i == n - 1:
				ans.append(-1)
			elif arr[i + 1] < arr[i]:
				ans.append(arr[i + 1])
			else:
				ans.append(-1)
		for i in range(n):
			arr[i] = ans[i]


class Solution:

	def immediateSmaller(self, arr, n):
		index = [-1 for i in range(n)]
		for i in range(0, n - 1):
			if arr[i + 1] < arr[i]:
				arr[i] = arr[i + 1]
			else:
				arr[i] = -1
		arr[-1] = -1


class Solution:

	def immediateSmaller(self, arr, n):
		l = 0
		r = 1
		while r < n:
			if arr[r] < arr[l]:
				arr[l] = arr[r]
			else:
				arr[l] = -1
			l += 1
			r += 1
		arr[n - 1] = -1
		return arr