几道题目

剑指 Offer 03. 数组中重复的数字
这道题的原地交换主要是是数组下标的应用
nums[i] / nums[nums[i]] 具有的意义都很重要
nums[nums[i]]
[2, 3, 1, 0, 2, 5, 3]
例如nums[1]=3 mums[nums[1]]=0
当nums[nums[i]]=nums[i] ,即找到了一组重复的值,这个思路在其他的重复值的题目中也是看情况可以用的

class Solution {
public:
    int findRepeatNumber(vector<int>& nums) {
        int i = 0;
        while(i < nums.size()) {
            if(nums[i] == i) {
                i++;
                continue;
            }
            if(nums[nums[i]] == nums[i])
                return nums[i];
            swap(nums[i],nums[nums[i]]);
        }
        return -1;
    }
};

作者:jyd
链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/solution/mian-shi-ti-03-shu-zu-zhong-zhong-fu-de-shu-zi-yua/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

剑指 Offer 04. 二维数组中的查找

这个题的思路大概是看规律查找
下一行大于上一行,右边一列大于左边一列,因此i,j不用遍历完一行再遍历下一行,直接从最右边一列开始比较即可

        int i = 0 ;
        int j = matrix.size() - 1 ; 
        while(i <= matrix.size() - 1 && j>=0){
            if(target == matrix[i][j]){
                return true;
            }
            if(matrix[i][j] > target){
                j--;
            }else{
              i++;   
            }
        }

剑指 Offer 05. 替换空格
双指针在数组字符串的题目中经常用到,经常用来简化一些操作

class Solution {
public:
    string replaceSpace(string s) {
        int count = 0; // 统计空格的个数
        int sOldSize = s.size();
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == ' ') {
                count++;
            }
        }
        // 扩充字符串s的大小,也就是每个空格替换成"%20"之后的大小
        s.resize(s.size() + count * 2);
        int sNewSize = s.size();
        // 从后先前将空格替换为"%20"
        for (int i = sNewSize - 1, j = sOldSize - 1; j < i; i--, j--) {
            if (s[j] != ' ') {
                s[i] = s[j];
            } else {
                s[i] = '0';
                s[i - 1] = '2';
                s[i - 2] = '%';
                i -= 2;
            }
        }
        return s;
    }
};

作者:carlsun-2
链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/solution/cshuang-100dong-hua-zhan-shi-xiang-xi-zhu-shi-by-c/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

posted @ 2021-12-31 18:06  melt00  阅读(34)  评论(0)    收藏  举报