第二周算法周报

本文介绍了如何找到整数数组中三个数的最大乘积,并提供了两种算法实现。第一种情况考虑了数组中正负数的组合,以获取最大乘积。第二种情况是判断一个整数是否为回文数,主要通过反转数字并与原数比较。这两个问题都是通过巧妙的数学和编程技巧解决的。

628.三个数的最大乘积
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 1:

输入:nums = [1,2,3]
输出:6
示例 2:

输入:nums = [1,2,3,4]
输出:24
示例 3:

输入:nums = [-1,-2,-3]
输出:-6

提示:

3 <= nums.length <= 104
-1000 <= nums[i] <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
public:
    int maximumProduct(vector<int>& nums) {
           int len=nums.size();
           if(len<3) return 0;
           sort(nums.begin(),nums.end());
           int max1,max2,max3;
            if(nums[0]>0||nums[len-1]<0)
           {
               max1=nums[len-1];
               max2=nums[len-2];
               max3=nums[len-3];
               return max1*max2*max3;
           }
           else if(nums[len-2]<0)
           {
               max1=nums[0];
               max2=nums[ 1];
               max3=nums[len-1];
               return max1*max2*max3;
           }
           else if(nums[len-1]*nums[len-2]*nums[len-3]>nums[len-1]*nums[0]*nums[1]&&nums[len-3]>0)
           {
               max1=nums[len-1];
               max2=nums[len-2];
               max3=nums[len-3];
               return max1*max2*max3;
           }
           else
           {
               return nums[len-1]*nums[0]*nums[1];
           }
            
    
    }
};

思路:
1.要先设置一个变量len=nums.size();//这是因为要确定数组长度
2.因为数组里的数字是杂乱无章的,所以要先进行排序(这里我用了冒泡但是最后是超时了)sort(nums.begin(),nums.end());题解都是这样进行排序的,用了之后就通过了
3.因为要三个元素的乘积的最大值,所以要设置三个变量max1,max2,max3
4.这里有三种情况第一种是全部的元素大于0,那就用数组最后三个元素相乘即可
5.第二种情况是只有一个正数,那就用数组元素的第一个元素和第二个元素还有最后一个元素进行相乘因为第一个和第二个元素是数组最小的两个数并且为负数,所以相乘之后得最大的两个正数再成一个最大的正数即可
6.第三种就是如果数组最后三个元素相乘和数组第一个和第二个还有最后一个相乘进行比较并且倒数第三个元素要大于0,因为要保证第二个数是大于0的

9.回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true
示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
public:
    bool isPalindrome(int x) {
      if(x<0||x%10==0&&x!=0)
            return false;
        long b=0;
        int a=x;
        while(x)
        {
            b=b*10+x%10;
            x=x/10;
        }
        
        return b==a?true:false;
    }
    
};

思路:
1.首先回文数不能小于0或者数字的尾部不能为0,因为这样不能构成回文数
例如:-121 倒过来之后121-这不是回文数
例如:1210 倒过来之后变成0121,这不是一个回文数因为数字的首部不能为0除法这个数本身就为0
2.要是都不是上面的类型那就用一个循环来处理这个数,我们可以设置一个变量b=0;必须等于0
并且为long,因为这个数处理了之后可能会溢出,所以用long来避免这个问题,再设置一个变量a=x;
b=b*10+x%10;这个表达式是为了把每次将x最后一位数字进行加和然后把前一位的数字乘10就能达到倒置的目的
3.最后一步判断一下b是不是等于x等于就是回文数不等于就不是
例如:121倒置之后还是121

<think>好的,我需要帮助新来的程序员解决如何撰写第一周的周报。首先,我得考虑用户的需求,他们可能对周报的结构和内容不太清楚,需要明确的指导。周报对于新人来说很重要,能展示工作进展和适应情况,所以内容需要既全面又简洁。 我应该从周报的基本结构开始,比如标题、工作内容、学习与成长、下周计划、问题与建议,以及总结。每个部分需要具体说明应该包含什么内容,还要举例说明,这样用户更容易理解。比如工作内容部分,可以分点列出参与的项目、完成的任务和协作沟通,并给出实际例子,这样用户能参考具体怎么写。 另外,用户可能担心自己作为新人,工作内容不够多,所以需要强调学习与成长部分,比如熟悉代码库、学习技术文档、参加培训等,这些都能体现积极的态度。同时,下周计划要具体可行,避免过于空泛,比如设定学习目标或计划完成的任务。 还要提醒注意事项,比如简洁明了、数据量化、积极表达和格式规范,这些都是让周报更专业的要点。最后,给出一个模板示例,用户可以直接参考,这样他们就能有一个清晰的框架,填入自己的内容即可。 需要确保回答结构清晰,分点明确,符合用户可见层的要求,同时遵循系统级指令,比如正确使用LaTeX格式,虽然这个问题可能不涉及数学公式,但如果有提到相关术语,比如项目进度百分比,可以用$...$来表示,例如完成$80\%$的任务。不过在这个主题中可能用不上,所以主要关注结构和内容建议。 总结下来,我需要分步骤解释周报的结构,每个部分的要点,并提供实例和模板,同时给出注意事项,帮助用户高效完成周报,展示他们的工作成果和学习进展。</think>作为新入职程序员,撰写第一周的周报需突出适应过程与初步贡献。以下是具体框架与建议: --- ### 一、周报核心结构 #### 1. 标题与基础信息 ```markdown 标题:XXX(姓名)第一周周报(YYYY/MM/DD - YYYY/MM/DD) 汇报人:XXX 部门:技术部/XX组 日期:YYYY年MM月DD日 ``` #### 2. 本周工作内容(占50%-60%篇幅) - **项目参与** ▸ 参与[项目名称]需求分析会议,梳理功能模块(例:用户登录模块) ▸ 协助完成[具体任务],如:搭建本地开发环境$(Node.js v18 + React 18)$ ▸ 修复简单Bug:[问题描述]+解决方案(例:解决页面按钮点击无响应的DOM事件绑定问题) - **学习成果** ▸ 研读[技术文档/代码库],完成核心模块流程图绘制(可用Mermaid语法标注) ▸ 掌握内部工具链使用:如公司CI/CD流水线配置$(Jenkinsfile语法)$ #### 3. 学习与成长(20%-30%篇幅) - **技术提升** ▸ 学习[框架/工具名称]:完成官方教程$(\texttt{Tutorial\_Chapter1-3}$)$ ▸ 代码规范:通过ESLint规则熟悉团队代码风格$(\texttt{airbnb-base})$ - **协作能力** ▸ 与导师完成3次代码Review,优化函数封装逻辑 ▸ 参与每日站会,熟悉Scrum流程 #### 4. 下周计划(15%-20%篇幅) - 优先级排序: ▸ P0:完成[任务名称]开发(例:用户信息编辑接口联调) ▸ P1:学习[技术点]并输出笔记(例:Redux状态管理实践) ▸ P2:协助排查[已知问题](例:数据库连接池性能波动) #### 5. 问题与建议(可选) - **阻塞性问题** ▸ 开发环境配置依赖版本冲突(附错误日志摘要) ▸ 接口文档缺失字段说明(具体接口名+字段) - **改进建议** ▸ 提议建立新人FAQ文档(减少重复问题咨询) --- ### 二、注意事项 1. **数据量化** ▸ 错误修复:完成$5$个低优先级Bug修复 ▸ 代码贡献:提交$3$次PR,合计$200$行代码(语言占比:$60\%$ TypeScript,$40\%$ Python) 2. **技术细节表达** ▸ 使用专业术语:如“实现$O(n)$时间复杂度算法优化” ▸ 关键代码片段: ```javascript // 使用React.memo优化渲染性能 export default React.memo(UserList); ``` 3. **风险预警** ▸ 标注未完成任务的依赖条件: “用户画像模块开发需等待产品提供埋点规范$v2.3$” --- ### 三、模板示例 ```markdown # 张三第一周周报(2024/02/26 - 2024/03/01) ## 一、本周工作 1. 参与「智能客服系统」迭代开发 - 完成知识库检索接口$RESTful$化改造 - 修复历史会话导出乱码问题(字符集强制转为UTF-8) - 代码Review通过率$100\%$(累计提交$4$个PR) 2. 环境与工具学习 - 掌握内部微服务调用规范$(gRPC+Protobuf)$ - 配置完成开发环境$(Docker Compose部署MySQL 8.0+Redis 6.2)$ ## 二、学习进展 - 精读《Clean Architecture》第1-3章 - 完成Kafka基础操作培训(创建Topic/消费组管理) ## 三、下周计划 1. P0:实现知识库版本回滚功能 2. P1:学习Prometheus监控集成方案 3. P2:优化单元测试覆盖率至$80\%$ ## 四、问题反馈 - 当前接口文档未更新至最新版本(/api/v3/search缺失threshold参数说明) ``` --- ### 四、扩展建议 - **可视化补充**:使用甘特图展示任务进度(可用Mermaid语法) ```mermaid gantt title 任务进度 section 第一周 环境搭建 :done, des1, 2024-02-26, 2d 接口改造 :active, des2, 2024-02-28, 3d ``` - **技术深度**:对复杂问题附加推导过程 “选择$SHA-256$而非$MD5$算法,因碰撞概率从$2^{128}$提升至$2^{256}$” --- 按此框架撰写周报,既能展示工作成果,也体现结构化思维能力,建议每周五下班前提交至直属上级与企业微信全员群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值