Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2098195

Browse files
Fruit Into Baskets
1 parent ce7b810 commit 2098195

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ My accepted leetcode solutions to some of the common interview problems.
1414
- [Can Place Flowers](problems/src/array/CanPlaceFlowers.java) (Easy)
1515
- [Merge Intervals](problems/src/array/MergeIntervals.java) (Medium)
1616
- [First Missing Positive](problems/src/array/FirstMissingPositive.java) (Hard)
17+
- [Fruit Into Baskets](problems/src/array/FruitIntoBaskets.java) (Medium)
1718
- [MaxProduct Of Three Numbers](problems/src/array/MaxProductOfThreeNumbers.java) (Easy)
1819
- [Missing Number](problems/src/array/MissingNumber.java) (Easy)
1920
- [Merge Sorted Array](problems/src/array/MergeSortedArray.java) (Easy)
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package array;
2+
3+
import java.util.Stack;
4+
5+
/**
6+
* Created by gouthamvidyapradhan on 02/03/2019
7+
* In a row of trees, the i-th tree produces fruit with type tree[i].
8+
*
9+
* You start at any tree of your choice, then repeatedly perform the following steps:
10+
*
11+
* Add one piece of fruit from this tree to your baskets. If you cannot, stop.
12+
* Move to the next tree to the right of the current tree. If there is no tree to the right, stop.
13+
* Note that you do not have any choice after the initial choice of starting tree: you must perform step 1, then step 2, then back to step 1, then step 2, and so on until you stop.
14+
*
15+
* You have two baskets, and each basket can carry any quantity of fruit, but you want each basket to only carry one type of fruit each.
16+
*
17+
* What is the total amount of fruit you can collect with this procedure?
18+
*
19+
*
20+
*
21+
* Example 1:
22+
*
23+
* Input: [1,2,1]
24+
* Output: 3
25+
* Explanation: We can collect [1,2,1].
26+
* Example 2:
27+
*
28+
* Input: [0,1,2,2]
29+
* Output: 3
30+
* Explanation: We can collect [1,2,2].
31+
* If we started at the first tree, we would only collect [0, 1].
32+
* Example 3:
33+
*
34+
* Input: [1,2,3,2,2]
35+
* Output: 4
36+
* Explanation: We can collect [2,3,2,2].
37+
* If we started at the first tree, we would only collect [1, 2].
38+
* Example 4:
39+
*
40+
* Input: [3,3,3,1,2,1,1,2,3,3,4]
41+
* Output: 5
42+
* Explanation: We can collect [1,2,1,1,2].
43+
* If we started at the first tree or the eighth tree, we would only collect 4 fruits.
44+
*
45+
*
46+
* Note:
47+
*
48+
* 1 <= tree.length <= 40000
49+
* 0 <= tree[i] < tree.length
50+
*
51+
*/
52+
public class FruitIntoBaskets {
53+
54+
private int count = 0;
55+
private int max = 0;
56+
/**
57+
* Main method
58+
* @param args
59+
*/
60+
public static void main(String[] args) {
61+
int[] trees = {1, 0, 3, 4, 3};
62+
System.out.println(new FruitIntoBaskets().totalFruit(trees));
63+
}
64+
65+
public int totalFruit(int[] tree) {
66+
int t1 = -1, t2 = -1;
67+
Stack<Integer> stack = new Stack<>();
68+
for(int i : tree){
69+
if(i == t1 || i == t2){
70+
countAndMax(stack, i);
71+
} else {
72+
if(t1 == -1){
73+
t1 = i;
74+
countAndMax(stack, i);
75+
} else if(t2 == -1){
76+
t2 = i;
77+
countAndMax(stack, i);
78+
} else{
79+
Stack<Integer> temp = new Stack<>();
80+
count = 0;
81+
t1 = stack.pop();
82+
countAndMax(temp, t1);
83+
while(!stack.isEmpty() && stack.peek() == t1){
84+
countAndMax(temp, stack.pop());
85+
}
86+
t2 = i;
87+
stack = temp;
88+
countAndMax(stack, i);
89+
}
90+
}
91+
}
92+
return max;
93+
}
94+
95+
private void countAndMax(Stack<Integer> stack, int i){
96+
count++;
97+
stack.push(i);
98+
max = Math.max(max, count);
99+
}
100+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /