From 6eb5eb10a124e3bfe297106a0f381578c7cb66ed Mon Sep 17 00:00:00 2001 From: Jidong Xiao Date: Tue, 26 Sep 2023 12:19:09 -0400 Subject: [PATCH] adding leetcode problems --- lectures/08_vector_implementation/README.md | 5 +++++ leetcode/p263_uglynumber.cpp | 24 +++++++++++++++++++++ leetcode/p27_removeelement.cpp | 17 +++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 leetcode/p263_uglynumber.cpp create mode 100644 leetcode/p27_removeelement.cpp diff --git a/lectures/08_vector_implementation/README.md b/lectures/08_vector_implementation/README.md index d733612..efdf7c1 100644 --- a/lectures/08_vector_implementation/README.md +++ b/lectures/08_vector_implementation/README.md @@ -223,3 +223,8 @@ The destructor is called implicitly when an automatically-allocated object goes - Finish the definition of Vec::push_back. - Write the Vec::resize function. + +## 8.16 Leetcode Exercises + +- [Leetcode problem 27: Remove Element](https://leetcode.com/problems/remove-element/). Solution: [p27_removeelement.cpp](../../leetcode/p27_removeelement.cpp) +- [Leetcode problem 263: Ugly Number](https://leetcode.com/problems/ugly-number/). Solution: [p263_uglynumber.cpp](../../leetcode/p263_uglynumber.cpp) diff --git a/leetcode/p263_uglynumber.cpp b/leetcode/p263_uglynumber.cpp new file mode 100644 index 0000000..549e268 --- /dev/null +++ b/leetcode/p263_uglynumber.cpp @@ -0,0 +1,24 @@ +class Solution { +public: + // use a non-type parameter as the template parameter list. + template // F represents factor, and it has to be constant + // reduce factor n, has to be reference, because we want to change n. + void reduceFactor(int& n){ + while(n%F==0){ + n = n/F; + } + } + bool isUgly(int n) { + // ugly number has to be a positive integer. + if(n<=0){ + return false; + } + // reduce factor 2 + reduceFactor<2>(n); + // reduce factor 3 + reduceFactor<3>(n); + // reduce factor 5 + reduceFactor<5>(n); + return (n==1); + } +}; diff --git a/leetcode/p27_removeelement.cpp b/leetcode/p27_removeelement.cpp new file mode 100644 index 0000000..6d2c194 --- /dev/null +++ b/leetcode/p27_removeelement.cpp @@ -0,0 +1,17 @@ +// note: using template here is completely unnecessary. this is just a demonstration of how to define a templated function. + +class Solution { +public: + template + T removeElement(vector& nums, T val) { + int size = nums.size(); + int j = 0; + for(int i=0;i