正文索引 [隐藏]

传送门→

T1重新排列数组

签到题,按题意模拟就行

class Solution {
public:
    vector<int> shuffle(vector<int>& nums, int n) {
        vector<int> ans;
        for(int i = 0; i < n; i++)
        {
            ans.push_back(nums[i]);
            ans.push_back(nums[n+i]);
        }
        return ans;
    }
};

T2 数组中的 k 个最强值

就是根据题目要求重新定义排序规则,在排序后取前k项即是答案

int m;
bool cmp(int a, int b)
{
    if(abs(a - m) != abs(b - m))
        return abs(a - m) > abs(b - m);
    return a > b;
}
class Solution {
public:
    vector<int> getStrongest(vector<int>& arr, int k) {
        int n = arr.size();
        sort(arr.begin(), arr.end());
        m = arr[(n-1)/2];

        sort(arr.begin(), arr.end(), cmp);

        vector<int> ans;
        for(int i = 0; i < k; i++) 
            ans.push_back(arr[i]);
        
        return ans;
    }
};

T3 设计浏览器历史记录

用数组模拟操作,题意读仔细就行了。

class BrowserHistory {
public:
    
    string web[5000];
    int now = -1;
    int size = -1;
    
    BrowserHistory(string homepage) {
        visit(homepage);
    }
    
    void visit(string url) {
        now++;
        web[now] = url;
        size = now;
    }
    
    string back(int steps) {
        if(now - steps < 0) 
        {
            now = 0;
            return web[now];
        }
        else
        {
            now -= steps;
            return web[now];
        }
    }
    
    string forward(int steps) 
    {
        if(now + steps > size) 
            now = size;
        else now += steps;
        return web[now];
    }
};

/**
 * Your BrowserHistory object will be instantiated and called as such:
 * BrowserHistory* obj = new BrowserHistory(homepage);
 * obj->visit(url);
 * string param_2 = obj->back(steps);
 * string param_3 = obj->forward(steps);
 */