mundra
BAN USERimport java.util.Date;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
public class CustomerLoginInfo {
// Note: We have assumed that customerID are Inetger
// Also the file is read in the custLoginMap
// custLoginMap is Map which contains the Set of customerID logeed in a
// particular Date
public Set<Integer> get4ConsecutiveDays(Map<Date, Set<Integer>> custLoginMap) {
Set<Integer> retSet = new HashSet<Integer>();
// Get the sorted keys
SortedSet<Date> sortedDays = new TreeSet<Date>(custLoginMap.keySet());
Date[] sortedDaysArr = sortedDays.toArray(new Date[sortedDays.size()]);
Set<Integer> s0 = custLoginMap.get(sortedDaysArr[0]);
Set<Integer> s1 = custLoginMap.get(sortedDaysArr[1]);
Set<Integer> s2 = custLoginMap.get(sortedDaysArr[2]);
Set<Integer> s3 = custLoginMap.get(sortedDaysArr[3]);
Set<Integer> s0Ints1 = new HashSet<Integer>(s0);
s0Ints1.retainAll(s1);
Set<Integer> s2Ints3 = new HashSet<Integer>(s2);
s2Ints3.retainAll(s3);
Set<Integer> finalSetInt = new HashSet<>(s0Ints1);
finalSetInt.retainAll(s2Ints3);
retSet.addAll(finalSetInt);
for (int i = 4; i < sortedDays.size(); i++) {
// Destroy s0Ints1
if (i % 4 == 0) {
s0Ints1 = custLoginMap.get(sortedDaysArr[i]);
s0Ints1.retainAll(custLoginMap.get(sortedDaysArr[i - 4 + 1]));
}
// Destroy s0Ints1
if (i % 4 == 1) {
s0Ints1 = custLoginMap.get(sortedDaysArr[i]);
s0Ints1.retainAll(custLoginMap.get(sortedDaysArr[i - 1]));
}
if (i % 4 == 2) {
s2Ints3 = custLoginMap.get(sortedDaysArr[i]);
s0Ints1.retainAll(custLoginMap.get(sortedDaysArr[i - 4 + 1]));
}
if (i % 4 == 3) {
s2Ints3 = custLoginMap.get(sortedDaysArr[i]);
s0Ints1.retainAll(custLoginMap.get(sortedDaysArr[i - 1]));
}
finalSetInt = new HashSet<>(s0Ints1);
finalSetInt.retainAll(s2Ints3);
retSet.addAll(finalSetInt);
}
return retSet;
}
public static void main(String[] args) {
}
}
import java.util.List;
public class MaximumK {
//Maximum with continuous elements
public int MaxCont(List<Integer> list) {
int currMax = list.get(0);
int maxsoFar = list.get(0);
for (int i = 1; i < list.size(); i++) {
currMax = Math.max(list.get(i), currMax + list.get(i));
maxsoFar = Math.max(currMax, maxsoFar);
}
return maxsoFar;
}
//Maximum with K-min continuous elements
public int MaxContwithK(List<Integer> list, int k) {
int curK = 0;
for (int i = 0; i < k; i++) {
curK = curK + list.get(i);
}
int currMax = curK;
int maxsoFar = curK;
for (int i = k; i < list.size(); i++) {
curK = curK - list.get(i - k) + list.get(i);
currMax = Math.max(curK, currMax + list.get(i));
maxsoFar = Math.max(currMax, maxsoFar);
}
return maxsoFar;
}
public static void main(String[] args) {
}
}
- mundra May 15, 2017