mirror of
https://github.com/TheAlgorithms/Python.git
synced 2026-03-13 09:50:19 +08:00
print() is a function just like every other function (#1101)
* print() is a function just like every other function
This commit is contained in:
committed by
Harshil
parent
6654e1ec7d
commit
89acf5d017
@@ -16,14 +16,14 @@ class FenwickTree:
|
||||
ret += self.ft[i]
|
||||
i -= i & (-i)
|
||||
return ret
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
f = FenwickTree(100)
|
||||
f.update(1,20)
|
||||
f.update(4,4)
|
||||
print (f.query(1))
|
||||
print (f.query(3))
|
||||
print (f.query(4))
|
||||
print(f.query(1))
|
||||
print(f.query(3))
|
||||
print(f.query(4))
|
||||
f.update(2,-5)
|
||||
print (f.query(1))
|
||||
print (f.query(3))
|
||||
print(f.query(1))
|
||||
print(f.query(3))
|
||||
|
||||
@@ -2,13 +2,13 @@ from __future__ import print_function
|
||||
import math
|
||||
|
||||
class SegmentTree:
|
||||
|
||||
|
||||
def __init__(self, N):
|
||||
self.N = N
|
||||
self.st = [0 for i in range(0,4*N)] # approximate the overall size of segment tree with array N
|
||||
self.lazy = [0 for i in range(0,4*N)] # create array to store lazy update
|
||||
self.flag = [0 for i in range(0,4*N)] # flag for lazy update
|
||||
|
||||
|
||||
def left(self, idx):
|
||||
return idx*2
|
||||
|
||||
@@ -34,7 +34,7 @@ class SegmentTree:
|
||||
self.lazy[self.right(idx)] = self.lazy[idx]
|
||||
self.flag[self.left(idx)] = True
|
||||
self.flag[self.right(idx)] = True
|
||||
|
||||
|
||||
if r < a or l > b:
|
||||
return True
|
||||
if l >= a and r <= b :
|
||||
@@ -74,18 +74,18 @@ class SegmentTree:
|
||||
showList = []
|
||||
for i in range(1,N+1):
|
||||
showList += [self.query(1, 1, self.N, i, i)]
|
||||
print (showList)
|
||||
|
||||
print(showList)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
A = [1,2,-4,7,3,-5,6,11,-20,9,14,15,5,2,-8]
|
||||
N = 15
|
||||
segt = SegmentTree(N)
|
||||
segt.build(1,1,N,A)
|
||||
print (segt.query(1,1,N,4,6))
|
||||
print (segt.query(1,1,N,7,11))
|
||||
print (segt.query(1,1,N,7,12))
|
||||
print(segt.query(1,1,N,4,6))
|
||||
print(segt.query(1,1,N,7,11))
|
||||
print(segt.query(1,1,N,7,12))
|
||||
segt.update(1,1,N,1,3,111)
|
||||
print (segt.query(1,1,N,1,15))
|
||||
print(segt.query(1,1,N,1,15))
|
||||
segt.update(1,1,N,7,8,235)
|
||||
segt.showData()
|
||||
|
||||
@@ -2,12 +2,12 @@ from __future__ import print_function
|
||||
import math
|
||||
|
||||
class SegmentTree:
|
||||
|
||||
|
||||
def __init__(self, A):
|
||||
self.N = len(A)
|
||||
self.st = [0] * (4 * self.N) # approximate the overall size of segment tree with array N
|
||||
self.build(1, 0, self.N - 1)
|
||||
|
||||
|
||||
def left(self, idx):
|
||||
return idx * 2
|
||||
|
||||
@@ -22,10 +22,10 @@ class SegmentTree:
|
||||
self.build(self.left(idx), l, mid)
|
||||
self.build(self.right(idx), mid + 1, r)
|
||||
self.st[idx] = max(self.st[self.left(idx)] , self.st[self.right(idx)])
|
||||
|
||||
|
||||
def update(self, a, b, val):
|
||||
return self.update_recursive(1, 0, self.N - 1, a - 1, b - 1, val)
|
||||
|
||||
|
||||
def update_recursive(self, idx, l, r, a, b, val): # update(1, 1, N, a, b, v) for update val v to [a,b]
|
||||
if r < a or l > b:
|
||||
return True
|
||||
@@ -55,17 +55,17 @@ class SegmentTree:
|
||||
showList = []
|
||||
for i in range(1,N+1):
|
||||
showList += [self.query(i, i)]
|
||||
print (showList)
|
||||
|
||||
print(showList)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
A = [1,2,-4,7,3,-5,6,11,-20,9,14,15,5,2,-8]
|
||||
N = 15
|
||||
segt = SegmentTree(A)
|
||||
print (segt.query(4, 6))
|
||||
print (segt.query(7, 11))
|
||||
print (segt.query(7, 12))
|
||||
print(segt.query(4, 6))
|
||||
print(segt.query(7, 11))
|
||||
print(segt.query(7, 12))
|
||||
segt.update(1,3,111)
|
||||
print (segt.query(1, 15))
|
||||
print(segt.query(1, 15))
|
||||
segt.update(7,8,235)
|
||||
segt.showData()
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
from __future__ import print_function
|
||||
# Python code to demonstrate working of
|
||||
# Python code to demonstrate working of
|
||||
# extend(), extendleft(), rotate(), reverse()
|
||||
|
||||
|
||||
# importing "collections" for deque operations
|
||||
import collections
|
||||
|
||||
|
||||
# initializing deque
|
||||
de = collections.deque([1, 2, 3,])
|
||||
|
||||
# using extend() to add numbers to right end
|
||||
|
||||
# using extend() to add numbers to right end
|
||||
# adds 4,5,6 to right end
|
||||
de.extend([4,5,6])
|
||||
|
||||
|
||||
# printing modified deque
|
||||
print ("The deque after extending deque at end is : ")
|
||||
print (de)
|
||||
|
||||
# using extendleft() to add numbers to left end
|
||||
print("The deque after extending deque at end is : ")
|
||||
print(de)
|
||||
|
||||
# using extendleft() to add numbers to left end
|
||||
# adds 7,8,9 to right end
|
||||
de.extendleft([7,8,9])
|
||||
|
||||
|
||||
# printing modified deque
|
||||
print ("The deque after extending deque at beginning is : ")
|
||||
print (de)
|
||||
|
||||
print("The deque after extending deque at beginning is : ")
|
||||
print(de)
|
||||
|
||||
# using rotate() to rotate the deque
|
||||
# rotates by 3 to left
|
||||
de.rotate(-3)
|
||||
|
||||
|
||||
# printing modified deque
|
||||
print ("The deque after rotating deque is : ")
|
||||
print (de)
|
||||
|
||||
print("The deque after rotating deque is : ")
|
||||
print(de)
|
||||
|
||||
# using reverse() to reverse the deque
|
||||
de.reverse()
|
||||
|
||||
|
||||
# printing modified deque
|
||||
print ("The deque after reversing deque is : ")
|
||||
print (de)
|
||||
print("The deque after reversing deque is : ")
|
||||
print(de)
|
||||
|
||||
@@ -1,52 +1,52 @@
|
||||
'''
|
||||
The stock span problem is a financial problem where we have a series of n daily
|
||||
The stock span problem is a financial problem where we have a series of n daily
|
||||
price quotes for a stock and we need to calculate span of stock's price for all n days.
|
||||
|
||||
The span Si of the stock's price on a given day i is defined as the maximum
|
||||
number of consecutive days just before the given day, for which the price of the stock
|
||||
The span Si of the stock's price on a given day i is defined as the maximum
|
||||
number of consecutive days just before the given day, for which the price of the stock
|
||||
on the current day is less than or equal to its price on the given day.
|
||||
'''
|
||||
from __future__ import print_function
|
||||
def calculateSpan(price, S):
|
||||
|
||||
n = len(price)
|
||||
# Create a stack and push index of fist element to it
|
||||
st = []
|
||||
st.append(0)
|
||||
|
||||
# Span value of first element is always 1
|
||||
S[0] = 1
|
||||
|
||||
# Calculate span values for rest of the elements
|
||||
for i in range(1, n):
|
||||
|
||||
# Pop elements from stack whlie stack is not
|
||||
# empty and top of stack is smaller than price[i]
|
||||
while( len(st) > 0 and price[st[0]] <= price[i]):
|
||||
st.pop()
|
||||
|
||||
# If stack becomes empty, then price[i] is greater
|
||||
# than all elements on left of it, i.e. price[0],
|
||||
# price[1], ..price[i-1]. Else the price[i] is
|
||||
# greater than elements after top of stack
|
||||
S[i] = i+1 if len(st) <= 0 else (i - st[0])
|
||||
|
||||
# Push this element to stack
|
||||
st.append(i)
|
||||
|
||||
|
||||
# A utility function to print elements of array
|
||||
def printArray(arr, n):
|
||||
for i in range(0,n):
|
||||
print (arr[i],end =" ")
|
||||
|
||||
|
||||
# Driver program to test above function
|
||||
price = [10, 4, 5, 90, 120, 80]
|
||||
S = [0 for i in range(len(price)+1)]
|
||||
|
||||
# Fill the span values in array S[]
|
||||
calculateSpan(price, S)
|
||||
|
||||
# Print the calculated span values
|
||||
printArray(S, len(price))
|
||||
def calculateSpan(price, S):
|
||||
|
||||
n = len(price)
|
||||
# Create a stack and push index of fist element to it
|
||||
st = []
|
||||
st.append(0)
|
||||
|
||||
# Span value of first element is always 1
|
||||
S[0] = 1
|
||||
|
||||
# Calculate span values for rest of the elements
|
||||
for i in range(1, n):
|
||||
|
||||
# Pop elements from stack whlie stack is not
|
||||
# empty and top of stack is smaller than price[i]
|
||||
while( len(st) > 0 and price[st[0]] <= price[i]):
|
||||
st.pop()
|
||||
|
||||
# If stack becomes empty, then price[i] is greater
|
||||
# than all elements on left of it, i.e. price[0],
|
||||
# price[1], ..price[i-1]. Else the price[i] is
|
||||
# greater than elements after top of stack
|
||||
S[i] = i+1 if len(st) <= 0 else (i - st[0])
|
||||
|
||||
# Push this element to stack
|
||||
st.append(i)
|
||||
|
||||
|
||||
# A utility function to print elements of array
|
||||
def printArray(arr, n):
|
||||
for i in range(0,n):
|
||||
print(arr[i],end =" ")
|
||||
|
||||
|
||||
# Driver program to test above function
|
||||
price = [10, 4, 5, 90, 120, 80]
|
||||
S = [0 for i in range(len(price)+1)]
|
||||
|
||||
# Fill the span values in array S[]
|
||||
calculateSpan(price, S)
|
||||
|
||||
# Print the calculated span values
|
||||
printArray(S, len(price))
|
||||
|
||||
Reference in New Issue
Block a user