[Hè 2016] Buổi 3 - STL

Chào các bạn,

Lớp thuật toán hè buổi 3 tiếp tục diễn ra với nội dung như sau:

  • Thời gian: 9h00 - 12h00 thứ 3, ngày 19/7/2016
  • Địa điểm: Phòng A205
  • Nội dung: Bài tập STL
  • Đăng kí bằng cách reply tại đây với nội dung: Đăng kí tham gia

Các bạn xem trước bài tập: https://leetcode.com/tag/array/

Đăng kí tham gia

Đăng kí tham gia

Đăng kí tham gia

Đăng kí tham gia

Đăng kí tham gia

Đăng kí tham dự

Move Zeroes:


 class Solution {
public:
    void moveZeroes(vector<int>& nums) {
      auto new_end = remove(nums.begin(), nums.end(), 0);
        fill(new_end, nums.end(), 0);
    }
};

Đăng ký tham gia

Contains Duplicate
Link leetcode: https://leetcode.com/problems/contains-duplicate/
Code:

class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
int i;
map<int,int> c;
for(i=0;i<nums.size();i++){
if (c.find(nums*)==c.end()){
c[nums*]=1;
}
else {
return true;
}
}
return false;
}
};

Contains Duplicate II: https://leetcode.com/problems/contains-duplicate-ii/

class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
map<int, int> c;
int i;
for (i=0;i<nums.size();i++){
if (c.find(nums*)==c.end()){
c[nums*]=i;
}
else{
//tim thay
if (i-c[nums*]<=k){
return true;
}
else {
c[nums*]=i;
}
}
}
return false;
}
};

Contains Duplicate II: https://leetcode.com/problems/contains-duplicate-ii/

class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
int n=nums.size();
map <int,int> count;
for(int i=0;i<n;i++)
{
if(count[nums*] && i-count[nums*]<k) return true;
count[nums*]=i+1;
}
return false;
}
};

Rotate Array:https://leetcode.com/problems/rotate-array/


class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        for(int i=0;i<k;i++){
            int c=nums.back();
            nums.insert(nums.begin(),c);
            nums.pop_back();
        }
    }
};

Rotate Array 24ms:https://leetcode.com/problems/rotate-array/

class Solution {
public:
void rotate(vector<int>& nums, int k) {
int n=nums.size();
k=k%n;
if(k==0) return;
vector <int> copy=nums;
int t=n-k;
for (int i=0; i<n; i++)
{
nums[(i+k)%n]=copy*;
}
}
};

Contains Duplicate II: https://leetcode.com/problems/contains-duplicate-ii/
72ms

class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
int i;
int n=nums.size();
map<int, int> c;
if(n<2) return false;
for(i=0; i<n; i++){
if(c[nums*]!=0){
if(abs(i+1-c[nums*]) <= k)
return true;
else c[nums*]=i+1;
}
else c[nums*]=i+1;
}
return false;
}
};

Contains Duplicate: https://leetcode.com/problems/contains-duplicate/
104ms

class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
int i, j, k=0;
int n=nums.size();
map<int, int> c;
for(i=0; i<n; i++){
if(c[nums*]==1) return true;
else c[nums*]=1;
}
return false;
}
};

Move Zeroes: https://leetcode.com/problems/move-zeroes/
22ms

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
      
      fill(remove( nums.begin(), nums.end(), 0), nums.end(), 0);
      
    }
};

Find the Duplicate: https://leetcode.com/problems/find-the-duplicate-number/
Time: 56ms

class Solution {
public:
int findDuplicate(vector<int> &nums){
int i;
map<int,int> c;
for(i=0;i<nums.size();i++){
if (c.find(nums*)==c.end()){
c[nums*]=1;
}
else {
return nums*;
}
}
return 0;
}
};

Remove Element : https://leetcode.com/problems/remove-element/
Time: 4ms

class Solution {
public:
int removeElement(vector<int>& nums, int val) {
for(i=0;i<nums.size();i++){
if(nums*==val){
nums.erase(nums.begin()+i);
i--;
}
}
return nums.size();
}
};

Majority Element: https://leetcode.com/problems/majority-element/
Time: 48 ms

class Solution {
public:
int majorityElement(vector<int>& nums) {
map<int, int>c;
int i;
for(i=0;i<nums.size();i++){
if (c.find(nums*)==c.end()){
c[nums*]=1;
if (c[nums*]>nums.size()/2) return nums*;
}
else {
c[nums*]++;
if (c[nums*]>nums.size()/2)
return nums*;
}
}
return 0;
}
};