day4 removeElement & nextPermutation & permutationSequence

  • To do
    又到了室内冻死人的季节



    两周了。。停滞在了这。。真是惭愧23333---
    今晚健身房回家后更番,明天开始早起刷一个半小时再去上班,7:40-9:10am

1] Remove Element

    int removeElement(vector<int>& nums, int val) {
        int nextWritter = -1;
        for (int scanner=0; scanner<nums.size(); ++scanner) {
            if (nums[scanner]!=val) {
                nums[++nextWritter] = nums[scanner];
            }
        }
        return nextWritter+1;
    }

or

    int removeElement(vector<int>& nums, int val) {
        return distance( nums.begin(), remove(nums.begin(), nums.end(), val) );
    }

2] Next Permutation
一开始没有找清楚规律,看好pivot之右是什么情况,为什么

    void nextPermutation(vector<int>& nums) {
        if (nums.size() < 2) return;
        for (auto r=nums.end()-1; r>nums.begin(); --r) {
            if (*(r-1) < *r){
                auto pivot = r-1;
                for (auto i=nums.end()-1; i>=r; --i) {
                    if (*i>*pivot) {
                        swap(*i, *pivot); //CAREFUL NOT TO SWAP ITERATOR
                        reverse(pivot+1, nums.end());
                        return;
                    }
                }
            }
        }
        reverse(nums.begin(), nums.end());
        return;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容