寒假作业Day 09

寒假作业Day 09

一、选择题

在这里插入图片描述

因为一开始的for循环,k<2NN,所以复杂度为2N方,而后面的M=10的while循环,则是10,复杂度为常数级,所以2N方+10,近似于N方,即O(N^2)

在这里插入图片描述

这是一个计算阶乘的递归函数,当n=0或者1的时候,无需递归,直接返回;而n=2开始,就需要递归n-1次,因此,递归调用的深度是n;又因为深度是n,而调用的时间复杂度为O(1),所以整个函数的时间复杂度为O(n)

在这里插入图片描述

这个函数中传递了一个n进去,初始化i=1,当i<=n时,i就一直乘以2,直到i>n时退出循环;我们拿几个数字举例子,n=1,那么循环1次;n=2,那么循环2次;n=4,那么循环3次…所以很明显,我们可以看出,这个函数的时间复杂度是O(logN)
解析:n近似=2 ^ i,则i近似=logN

4、动态顺序表中,( )操作需要检查是否需要扩容
A.删除 B.插入 C.初始化 D.清空

答案是插入:初始化会给一定的初始空间,不需要检查扩容;而删除和清空的意思其实大差不差,删除并不需要检查扩容,而是检查是否还有可以删除的元素;只有插入,需要检测是否有足够的空间使其可以插入元素进去

5、在长度为 X 的顺序表下标为 i 的位置前插入一个元素( 1 ≤ i ≤ X+1 ),元素的移动次数为( )
A. X - i + 1 B. X - i C. X D. X-1

答案选择B,X-i,如何计算大家可以自己画图解析~

二、编程题

在这里插入图片描述

int* runningSum(int* nums, int numsSize, int* returnSize){
    int* a=(int*)malloc(sizeof(int)*numsSize);//首先要malloc一个新数组
    if(a==NULL){
        perror("malloc fail");
        return NULL;
    }

    int i=0;
    a[0]=nums[0];

    for(i=1;i<numsSize;i++){
        a[i]=nums[i]+a[i-1];//根据规律放值进去
    }

    *returnSize=numsSize;//返回的数组大小
    return a;
}

在这里插入图片描述

//二分法
int searchInsert(int* nums, int numsSize, int target) {  
    int begin = 0;  
    int end = numsSize - 1;  
    while (begin <= end) {  
        int mid = begin + (end - begin) / 2;//是为了防止数值过大溢出,一般我们会想到的是(begin+end)/2
        if (nums[mid] > target) {  
            end = mid - 1;  
        } else if (nums[mid] < target) {  
            begin = mid + 1;  
        } else {  
            return mid;  
        }  
    }  
    // 循环结束后,begin 是第一个大于 target 的元素的索引  
    // 因此,target 应该插入在 begin 的位置  
    return begin;  
}
### 关于苍穹外卖 Day09 的教程或资料 目前提供的引用中并未直接提及关于苍穹外卖第9天的具体内容。然而,可以通过分析已有的参考资料来推测可能的学习方向以及相关内容。 #### 已知信息总结 1. **Swagger调试**:如果在学习过程中遇到Swagger无法正常工作的情况,可以参考【苍穹外卖】Day1的相关说明[^1]。 2. **AOP实现公共字段填充**:DAY4的内容涉及通过AOP技术实现公共字段的自动填充功能[^2]。 3. **Web配置文件**:在Day3到Day5期间,`WebMvcConfiguration.java` 文件被重点讲解,涉及到Spring Boot中的Web相关配置[^3]。 4. **实体对象构建方式**:Day2的部分知识点记录了如何使用构造器模式创建实体类对象,并介绍了常见的注解如 `@PathVariable`, `@RequestParam`, 和 `@RequestBody` 等[^4]。 #### 推测Day09可能涵盖的主题 虽然具体Day09的教学内容未提供,但根据前几日的知识点分布规律,通常会逐步深入业务逻辑、优化性能或者集成第三方服务等内容。以下是几个可能的方向: - **分布式事务管理**:随着系统的复杂度增加,在多模块协作场景下可能会引入分布式事务解决方案(如Seata)。 - **缓存机制设计**:为了提升访问效率,可能会加入Redis或其他内存数据库作为缓存层。 - **消息队列应用**:处理异步任务时常用RabbitMQ/Kafka等中间件工具。 - **安全性增强措施**:比如OAuth2认证授权流程的设计与实践。 下面给出一段假设性的代码片段展示如何利用Lombok简化Java Bean定义过程的同时支持链式调用特性: ```java import lombok.Builder; import lombok.Data; @Data @Builder(toBuilder = true) public class OrderDetail { private String orderId; // 订单编号 private Integer userId; // 用户ID private Double totalAmount; // 总金额 public static void main(String[] args){ OrderDetail order = OrderDetail.builder() .orderId("20231018123456789") .userId(1001) .totalAmount(123.45d) .build(); System.out.println(order); } } ``` 此示例仅作教学用途演示,请依据实际需求调整相应属性名称及其类型定义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值