九日集训 Day 3 一维数组

本文介绍了作者在LeetCode上刷题的经历,重点关注了一维数组操作和递归问题。文章通过搜索旋转排序数组、爬楼梯的斐波那契数列以及寻找数组中满足特定条件的元素等题目,展示了C++代码实现。作者计划重新审视并优化这些解决方案,以提供更具价值的教育资源。
摘要由CSDN通过智能技术生成

0 前言

现在写的Leetcode程序大多不符合题目要求,现阶段只是把题目刷过,后面重刷时会严格按照题目要求进行解答,并重写博客,争取创作出更有价值,更能帮助初学者的内容。

1 学习内容 一维数组

数组是一种简单数据结构,下标从0开始。

2 Leetcode 刷题

2.1 搜索数组中的元素

相关题目

搜索旋转排序数组

搜索旋转排序数组 II

寻找旋转排序数组中的最小值

山峰数组的顶部

猜数字

以上三道题十分类似,都是遍历搜索数组后,找出符合要求的元素后返回值。

这里只附上第一道题的cpp代码。

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

 2.2 fibonacci 类型题

爬楼梯

斐波那契数

泰波那契数

需要注意的是,爬楼梯问题中,由于每次只能走一阶楼梯或者两阶楼梯,所以到达第n阶楼梯的方法就等于到达第n-1阶楼梯与第n-2阶楼梯的方法数之和,符合f(n) = f(n-1) + f(n-2) 的表达式。因此就巧妙地转化为Fibonacci 数列问题。

附上爬楼梯的cpp源码。

class Solution {
public:
    int f[100];
    int climbStairs(int n) {
        f[0] = f[1] =1;
        for(int i = 2; i < n + 1; ++i){
            f[i] = f[i-1] + f[i-2];
        }
        return f[n];
    }
};

 2.3 其他类型题

相关题目

差的绝对值为 K 的数对数目

拿硬币

以上两道题目通过遍历数组中的元素,判断是否满足题设条件后即可做出。

第1题cpp源码:

class Solution {
public:
    int countKDifference(vector<int>& nums, int k) {
        int counts_num = 0;
        for(int i = 0; i < nums.size(); ++i){
            for(int j = i + 1; j < nums.size(); ++j){
                if(abs(nums[i]-nums[j])==k){
                    counts_num += 1;
                }
            }
        }
        return counts_num;
    }
};

第2题cpp源码:

class Solution {
public:
    int minCount(vector<int>& coins) {
        int nums_to_coins = 0;
        for(int i = 0; i < coins.size(); ++i){
            nums_to_coins += (coins[i] + 1) / 2;
        }
        return nums_to_coins;
    }
};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值