leetcode基础题

开一个刷题博客,长期更新。

目录

Array

27. Remove Element

26. Remove Duplicates from Sorted Array


Array

27. Remove Element

class Solution {
public:
    int removeElement(vector& nums, int val) {
        int j = nums.size()-1;
        for(int i = 0;i<=j;) //注意这个地方的条件是i<=j
        {
            if(nums[i] == val)
                swap(nums[i], nums[j--]);
            else
                ++i;
        }
        return j+1;
    }
};

26. Remove Duplicates from Sorted Array

1. 基础版本

class Solution {
public:
    int removeDuplicates(vector& nums) {
        if(nums.empty())
            return 0;
        int i = 0;
        for(int j = 1;j

2. 小改进版本

并不用维护整个数组的元素,交换操作可以不用

class Solution {
public:
    int removeDuplicates(vector& nums) {
        if(nums.empty())
            return 0;
        int i = 0;
        for(int j = 1;j

80. Remove Duplicates from Sorted Array II

class Solution {
public:
    int removeDuplicates(vector& nums) {
        int size = nums.size();
        if(size<3)
            return size;
        int pos = 2; //pos标记当前需要处理的位置
        for(int i = 2;i

277. Find the Celebrity

bool knows(int a, int b);

class Solution
{
public:
	int findCelebrity(int n)
	{
		int tar = 0;
		for (int i = 1; i < n; ++i)
			tar = knows(i, tar) ? tar : i;
		for (int i = 0; i < n; ++i)
		{
			if (i != tar && (knows(tar, i) || !knows(i, tar)))
				return -1;
		}
		return tar;
	}
};

189. Rotate Array

class Solution {
public:
    void rotate(vector& nums, int k) {
        reverse(nums.begin(), nums.end());
        k = k%nums.size();
        reverse(nums.begin(), nums.begin()+k);
        reverse(nums.begin()+k, nums.end());
    }
};

41. First Missing Positive

迭代器算法

class Solution {
public:
    int firstMissingPositive(vector& nums) {
        int num = 1;
        while(find(nums.begin(), nums.end(), num)!=nums.end())
            num++;
         return num;
    }
   
};

下标索引

class Solution {
public:
	int firstMissingPositive(vector& nums) {
		int res;
		for (int i = 0; i < nums.size(); ++i)
		{
			while (nums[i] > 0 && nums[i] <= nums.size() && nums[nums[i]-1] != nums[i]) //将每个元素放到与其下标对应的位置上
				swap(nums[i], nums[nums[i]-1]);
		}
		for(int i = 0; i

299. Bulls and Cows

class Solution {
public:
	string getHint(string secret, string guess) {
		vector s(10, 0);
		int cowCount = 0;
		int len = secret.size();
		for (int i = 0; i < len; ++i)
		{
			if (secret[i] == guess[i])
				++cowCount;
			else
				++s[secret[i]-'0'];
		}
		int bullCount = 0;
		for (int i = 0; i < len; ++i)
			if (secret[i] != guess[i] && s[guess[i]-'0'] > 0)
			{
				++bullCount;
				--s[guess[i]-'0'];
			}
				
		return to_string(cowCount) + 'A' + to_string(bullCount) + 'B';
	}
};

 

你可能感兴趣的:(算法研讨之路)