day-24 加油站

在这里插入图片描述
参考了答案。。。。。。

思路:借用用户Tristan的一段话:
首先判断总gas能不能大于等于总cost,如果总gas不够,一切都白搭对吧(总(gas- cost)不用单独去计算,和找最低点时一起计算即可,只遍历一次);
再就是找总(gas-cost)的最低点,不管正负(当然如果最低点都是正的话那肯定能跑完了)此时返回零;
找到最低点后,如果有解,那么解就是最低点的下一个点,因为总(gas-cost)是大于等于0的,所以前面损失的gas我从最低点下一个点开始都会拿回来!,别管后面的趋势是先加后减还是先减后加,最终结果我是能填平前面的坑的。

code:

class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int length = gas.length;
        int rest = 0;
        int minRest = Integer.MAX_VALUE;
        int minIndex = 0;

        for (int i = 0; i < length; i++) {
            rest += gas[i] - cost[i];//到达下一加油站剩余油量
            if (rest < minRest) {
                minRest = rest;
                minIndex = i;
            }
        }
        if (rest < 0) return -1;//无解
        else if (minRest >= 0) return 0;//任何点开始都能绕一圈
        else return (minIndex + 1) % length;//有解 解就是最低点的下一个点
    }
}
我是一个java初学者 我让我的deepseek给我安排了一个完成项目的日志以下是针对你的一周高效学习与开发方案,每天聚焦核心任务,确保完成基础功能: --- ### **整体策略** 1. **优先级排序**:先完成客户端、商户端、管理端的**核心功能**(必须完成项),再考虑进阶功能。 2. **简化前端展示**:使用**控制台输入输出**或**HTML+JS纯原生前端**(无需复杂框架),减少学习成本。 3. **模块化开发**:严格遵循MVC分层(Servlet→Service→DAO),边学边实现。 --- ### **每日计划(总计约40小时)** #### **Day 1:搭建基础环境 + 数据库设计(4小时)** 1. **环境配置(1小时)** - 安装JDK11、IDEA、MySQL、Navicat/SQLyog。 - 创建Gitee仓库,初始化项目结构(按分包要求)。 2. **数据库设计(3小时)** - 分析需求,设计表结构(至少包含以下表): - **用户表**(用户ID、账号、密码、钱包余额、角色[客户/商户/管理员]) - **店铺表**(店铺ID、名称、地址、状态[营业中/封禁]、审核状态) - **房型表**(房型ID、店铺ID、床型、剩余数量、价格、关键词) - **订单表**(订单ID、用户ID、房型ID、状态[已预订/已取消]、金额、时间) - 使用Navicat建表,并生成SQL脚本提交到仓库。 --- #### **Day 2:JDBC工具类封装 + 用户登录注册(4小时)** 1. **学习JDBC核心(2小时)** - 掌握`Connection`、`PreparedStatement`、`ResultSet`的使用。 - 封装`JDBCUtils`工具类(连接池、关闭资源)。 2. **实现用户模块(2小时)** - 编写`UserDao`:实现用户注册、登录(密码明文存储即可)。 - 编写`UserServlet`:处理注册/登录请求(通过控制台或HTML表单输入)。 - **测试**:通过控制台输入账号密码验证登录逻辑。 --- #### **Day 3:客户端核心功能(4小时)** 1. **用户功能(2小时)** - 实现**修改个人信息**、**充值钱包**(更新用户表余额)。 - 编写`UserService`处理业务逻辑(如充值金额校验)。 2. **店铺浏览与排序(2小时)** - 编写`ShopDao`:查询所有店铺(按销量、发布时间排序)。 - 在`ShopServlet`中返回店铺列表(控制台打印或HTML表格展示)。 --- #### **Day 4:商户端核心功能(4小时)** 1. **商户入驻与审核(2小时)** - 编写`ShopDao`:商户注册(插入店铺表,状态为“待审核”)。 - 编写`AdminServlet`:管理员审核店铺(更新店铺状态)。 2. **房型管理(2小时)** - 商户登录后,实现**添加房型**、**修改房型信息**(操作房型表)。 - 编写`RoomDao`和`RoomServlet`处理请求。 --- #### **Day 5:订单模块 + 退订(4小时)** 1. **订房功能(2小时)** - 编写`OrderDao`:插入订单记录,减少房型剩余数量。 - 实现**订房**逻辑(检查房型余量、更新钱包余额)。 2. **退订功能(2小时)** - 编写`OrderDao`:更新订单状态为“已取消”,返还房型余量。 - 处理退订时的金额返还逻辑(需事务控制)。 --- #### **Day 6(周末):管理端 + 联调测试(10小时)** 1. **管理端功能(4小时)** - 实现管理员**封禁店铺**、**审核充值**(需新增充值审核表)。 - 编写`AdminServlet`处理审核逻辑。 2. **联调与测试(6小时)** - 通过控制台或简单HTML页面模拟用户、商户、管理员操作。 - 重点测试:订单状态流转、余额变动、审核流程。 - 修复BUG,确保核心流程跑通。 --- #### **Day 7(周末):日志整理 + 代码优化(10小时)** 1. **代码规范(4小时)** - 安装阿里巴巴插件,修复所有警告(如命名规范、分层问题)。 - 抽离冗余代码为工具类(如日期格式化、金额校验)。 2. **提交与文档(6小时)** - 编写项目README.md(说明功能、数据库设计、运行方式)。 - 提交完整代码到Gitee,确保分支清晰、提交记录有意义。 - 整理每日日志(记录学习内容和开发进度)。 --- ### **关键学习资源推荐** 1. **JDBC入门**:B站黑马程序员《JDBC从入门到精通》(2小时速通)。 2. **Servlet基础**:菜鸟教程Servlet快速入门(1小时掌握请求响应流程)。 3. **原生前端交互**:使用`fetch API`或`XMLHttpRequest`实现前后端通信(MDN文档)。 --- ### **注意事项** 1. **严格分层**:Servlet只负责接收请求和返回结果,业务逻辑交给Service层。 2. **事务控制**:在JDBC中手动管理事务(如订单创建时开启事务,确保余额和房型同步更新)。 3. **简单前端**:用HTML表单+JS发送请求,避免复杂框架(例如用`<form action="/login" method="post">`)。 --- 按此计划执行,你可以在7天内完成核心功能并通过考核!遇到问题优先查阅官方文档,必要时再向师兄师姐提问。加油! 我现在完成了第一步 已经在workbench中创建了users shop room oders 请告诉我下一步
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值