diff --git a/leetcode/README.md b/leetcode/README.md index 9c8402df..0c370e42 100644 --- a/leetcode/README.md +++ b/leetcode/README.md @@ -23,6 +23,7 @@ LeetCode |109|[Convert Sorted List to Binary Search Tree](https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/) | [C](./src/109.c)|Medium| |110|[Balanced Binary Tree](https://leetcode.com/problems/balanced-binary-tree/) | [C](./src/110.c)|Easy| |112|[Path Sum](https://leetcode.com/problems/path-sum/) | [C](./src/112.c)|Easy| +|121|[Best Time to Buy and Sell Stock](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/) | [C](./src/121.c)|Easy| |125|[Valid Palindrome](https://leetcode.com/problems/valid-palindrome/) | [C](./src/125.c)|Easy| |136|[Single Number](https://leetcode.com/problems/single-number/) | [C](./src/136.c)|Easy| |141|[Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/) | [C](./src/141.c)|Easy| @@ -67,4 +68,4 @@ LeetCode |938|[Range Sum of BST](https://leetcode.com/problems/range-sum-of-bst/) | [C](./src/938.c)|Easy| |965|[Univalued Binary Tree](https://leetcode.com/problems/univalued-binary-tree/) | [C](./src/965.c)|Easy| |977|[Squares of a Sorted Array](https://leetcode.com/problems/squares-of-a-sorted-array/) | [C](./src/977.c)|Easy| -|1189|[Maximum Number of Balloons](https://leetcode.com/problems/maximum-number-of-balloons/) | [C](./src/1189.c)|Easy| \ No newline at end of file +|1189|[Maximum Number of Balloons](https://leetcode.com/problems/maximum-number-of-balloons/) | [C](./src/1189.c)|Easy| diff --git a/leetcode/src/121.c b/leetcode/src/121.c new file mode 100644 index 00000000..45433806 --- /dev/null +++ b/leetcode/src/121.c @@ -0,0 +1,27 @@ +int maxProfit(int* prices, int pricesSize){ + /* If there is only only one day, profit cannot be made + */ + if(pricesSize <= 1) { + return 0; + } + int min_element = prices[0]; + int max_difference = prices[1] - min_element; + for(int i = 0; i < pricesSize; i++) { + /* whenever maximum profit can be made, we sell the stock. + so we change the maximum difference + */ + if(prices[i] - min_element > max_difference) { + max_difference = prices[i] - min_element; + } + /* if a cheaper stock is available, we make that the minimum element + */ + if(min_element > prices[i]) { + min_element = prices[i]; + } + } + /* return 0 if max_difference is less than zero, incase there is no way of making profits + */ + return (max_difference < 0)? 0 : max_difference; +} + +