LeetCode双周赛131(240525)
双周赛131(240525) AK的第二场😝, 第四题是用C++ 找网上模板,套用查找最长的连0串过的, 最后两分钟才过,很惊险。赛后发现做法并不优秀,但是不需要平衡树。 3161. 物块放置查询 题目大意: ...
双周赛131(240525) AK的第二场😝, 第四题是用C++ 找网上模板,套用查找最长的连0串过的, 最后两分钟才过,很惊险。赛后发现做法并不优秀,但是不需要平衡树。 3161. 物块放置查询 题目大意: ...
周赛399(240526) 这场掉分了,第四题没思路,而且罚时太多了😥 第三题3164. 优质数对的总数 II 题目大意: 给定两个整数数组nums1和nums2,以及一个正整数k。如果nums1[i]可以被nums2[j]*k整除,则称数对(i, j)为优质数对。要求计算优质数对的总数。 ...
Python库 程序易错点 : 变量未声明 i,j,k变量写错了 变量名一定要看清楚 函数体内变量和外部变量分不清,变量名相近的一定要看清楚 七夕祭 题目大意: TYVJ 七夕祭的会场是一个 N 行 M 列的矩形,共有 N×M 个摊点。Vani 邀请 cl 同学来参加,但 cl 只对其中的一部分摊点感兴趣。Vani 希望能够通过调整摊点的布置,使得每行和每列中 cl 感兴趣的摊点数相等。现在需要判断是否能满足这两个要求,并计算最少需要交换的摊点数。 ...
周赛250519 终于终于AK了一场😆 第四题100298. 到达第 K 级台阶的方案数 题目大意 给定一个非负整数 k,表示目标台阶的编号。虎老师从台阶 1 开始,通过一系列操作到达台阶 k。操作分为两种: ...
周赛20240505 第四题 100288. 使数组中所有元素相等的最小开销 题目大意:给定一个整数数组 nums 和两个整数 cost1 和 cost2,可以执行两种操作来使数组中所有元素相等:1. 选择某个元素增加1,开销为cost1;2. 选择两个不同的元素同时增加1,开销为cost2。目标是使数组中所有元素相等,返回需要的最小开销之和。 ...
LeetCode每日一题(2405) 1235. 规划兼职工作 题目大意:给定n份兼职工作,每份工作都有开始时间、结束时间和报酬。任务是选择一些工作,使得在不重叠的情况下能够获得最大报酬。 实现思路:首先对工作按照结束时间进行排序,然后使用动态规划来求解最大报酬。在动态规划的过程中,维护一个数组f,其中f[i]表示在考虑前i个工作时可以获得的最大报酬。遍历每个工作,对于第i个工作,找到在其开始时间之前且结束时间最接近的工作j,然后更新f[i]为f[j] + 第i个工作的报酬。最终返回f[n]即为所求的最大报酬。 ...
双周赛20230427 第三/四题3130. 找出所有稳定的二进制数组 II 题目大意:给定三个正整数 zero、one 和 limit,定义一个二进制数组 arr,要求满足以下条件:数组中 0 出现的次数为 zero,1 出现的次数为 one,并且数组中每个长度超过 limit 的子数组都同时包含 0 和 1。求稳定二进制数组的总数目。 ...
周赛240428 第四题134. 找出唯一性数组的中位数 题目大意:给定一个整数数组nums,唯一性数组是一个按元素从小到大排序的数组,包含了nums的所有非空子数组中不同元素的个数。要求返回nums唯一性数组的中位数,即有序唯一性数组的中间元素。 ...
Java Web开发(3) Maven Maven是一款管理和构建java项目的工具 依赖管理 统一的项目结构 项目构建 <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> MVN坐标 Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置 使用坐标来定义项目或引入项目中所需要的依赖 Maven的坐标主要组成 ...
Java Web开发(4) 数据库 数据库:DataBase(DB) , 是存储和管理数据的仓库 DBMS, SQL MySql登录,首先在服务中启动mysql mysql -uroot -p"password" 或者 mysql -uroot -p 之后输入密码 ...
Java Web开发(1) 什么是Web? Web:全球广域网,也称为万维网(World Wide Web),能够通过浏览器访问的网站 CRM OA ERP 不谋全局者不足以谋一域 前后端分离开发 混合开发 ...
Java Web开发(2) Vue Vue是一套前端框架,免除原生的JavaScript中的DOM操作,简化书写。 基于MVVM(Model-View-View-Model)思想,实现数据的双向绑定,将编程的关注点放在数据上。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue</title> <!-- 引入Vue.js库 --> <script src="../js/vue.js"></script> </head> <body> <div id="app"> <!-- 输入框,使用v-model指令实现双向数据绑定 --> <input type="text" v-model="message"> <!-- 使用插值表达式显示message变量的值 --> {{ message }} </div> </body> <script> // 创建一个Vue实例 new Vue({ // 将Vue实例挂载到id为"app"的元素上 el: "#app", // 定义数据对象 data: { message: "Hello Vue" // 初始值为"Hello Vue" } }) </script> </html> Vue常用指令 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue</title> <!-- 引入 Vue.js 文件 --> <script src="../js/vue.js"></script> </head> <body> <!-- Vue 实例挂载的根节点 --> <div id="app"> <table border="1" cellspacing="0" width="60%"> <tr> <th>编号</th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>成绩</th> <th>等级</th> </tr> <!-- 使用 v-for 循环渲染列表 --> <tr align="center" v-for="(user, index) in users"> <td>{{index + 1}}</td> <td>{{user.name}}</td> <td>{{user.age}}</td> <td> <!-- 使用 v-if 条件渲染 --> <span v-if="user.gender == 1">男</span> <span v-if="user.gender == 2">女</span> </td> <td>{{user.score}}</td> <td> <!-- 使用 v-if、v-else-if、v-else 实现多条件渲染 --> <span v-if="user.score >= 60 && user.score < 85">优秀</span> <span v-else-if="user.score >= 85">及格</span> <span style="color:red" v-else>不及格</span> </td> </tr> </div> </body> <script> // 创建 Vue 实例 new Vue({ el: "#app", // 指定实例挂载的根节点 data: { // 用于存储数据的对象 users: [{ name: "Tom", age: 20, gender: 1, score: 30 }, { name: "Rose", age: 18, gender: 2, score: 99 }, { name: "Jerry", age: 16, gender: 1, score: 98 }, { name: "Kennem", age: 21, gender: 1, score: 100 }] }, }) </script> </html> Vue生命周期 new new Vue({ el: "#app", //接管区域 data: { }, methods: { }, mounted() { alert("挂载完成!"); }, }) Ajax Asynchronous JavaScript And XML, 异步的JavaScript和XML 作用: 数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想,用户名是否可用的校验等。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>原生Ajax</title> </head> <body> <input type="button" value="获取数据" onclick="getData()"> <div id="div1"></div> </body> <script> function getData() { // 创建XMLHttpRequest对象 var xmlHttpRequest = new XMLHttpRequest(); // 发送异步请求 xmlHttpRequest.open('GET', 'https://xxx/json_demo.json'); xmlHttpRequest.send(); // 发送请求 // 获取服务响应数据 xmlHttpRequest.onreadystatechange = function () { if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) { document.getElementById('div1').innerHTML = xmlHttpRequest.responseText; } } } </script> </html> Axios Axios对原生的Ajax进行了封装,简化书写,快速开发。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Ajax-Axios-案例</title> <!-- 引入axios库 --> <script src="js/axios-0.18.0.js"></script> <!-- 引入Vue.js --> <script src="js/vue.js"></script> </head> <body> <div id="app"> <!-- 数据展示表格 --> <table border="1" cellspacing="0" width="60%"> <!-- 表头 --> <tr> <th>编号</th> <th>姓名</th> <th>图像</th> <th>性别</th> <th>职位</th> <th>入职日期</th> <th>最后操作时间</th> </tr> <!-- 数据行,使用Vue.js的v-for指令循环渲染 --> <tr align="center" v-for="(emp,index) in emps"> <td>{{index + 1}}</td> <!-- 显示编号 --> <td>{{emp.name}}</td> <!-- 显示姓名 --> <td> <img :src="emp.image" width="70px" height="50px"> <!-- 显示图像 --> </td> <td> <span v-if="emp.gender == 1">男</span> <!-- 根据性别显示男或女 --> <span v-if="emp.gender == 2">女</span> </td> <td>{{emp.job}}</td> <!-- 显示职位 --> <td>{{emp.entrydate}}</td> <!-- 显示入职日期 --> <td>{{emp.updatetime}}</td> <!-- 显示最后操作时间 --> </tr> </table> </div> </body> <script> new Vue({ el: "#app", data: { emps: [] // 存储员工数据的数组 }, mounted () { // 在Vue实例mounted生命周期钩子中发送异步请求加载数据 axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then(result => { // 异步请求成功后将数据赋值给emps数组 this.emps = result.data.data; }) } }); </script> </html> 接口管理平台 Yapi apifox ...
Java20天速成——进阶课程(5) 网络编程 可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信) 基本的通信架构 基本的通信架构有2中形式:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务器) 无论是CS架构,还是BS架构的软件都必须要依赖网络编程 ...
力扣周赛394(20240421) 第三题100290. 使矩阵满足条件的最少操作次数 题目大意:给定一个大小为 m x n 的二维矩形 grid,每次操作可以将任意格子的值修改为任意非负整数。完成所有操作后,需要确保每个格子 grid[i][j] 的值满足以下条件:如果下面相邻格子存在的话,它们的值相等;如果右边相邻格子存在的话,它们的值不相等。返回需要的最少操作次数。 记忆化 实现思路:首先,统计每一列中各个数字的出现次数。然后,使用动态规划的方法,定义函数dfs(i, pre),表示处理到第i列时,前一列的值为pre时的最大操作次数。在dfs中,对于当前列的每个数字,考虑是否修改当前列的值,然后递归处理下一列。利用缓存来避免重复计算。最后返回总的操作次数。 class Solution: # 如果你想不出来,1、你不知道这个知识点 2、 你知道这个知识点但是方向错了 def minimumOperations(self, g: List[List[int]]) -> int: n, m = len(g), len(g[0]) cnt = [[0]*10 for _ in range(m)] for row in g: for k, v in enumerate(row): cnt[k][v]+=1 @cache def dfs(i, pre): if i<0: return 0 res = 0 for v in range(10): if v!=pre: res = max(res, dfs(i-1, v) + cnt[i][v]) return res return m*n - dfs(m-1, -1) 递推 实现思路:首先,对每一列进行遍历,并统计每列中每个数字的出现次数。然后,通过动态规划的方法,使用两个变量f0和f1分别表示当前列处理时,前一列最大能保留的个数和次大能够保留的个数。接着,通过遍历每列中的每个数字,计算当前列的最大操作次数,并更新f0和f1。最后返回总的操作次数。 class Solution: def minimumOperations(self, grid: List[List[int]]) -> int: n, m = len(grid), len(grid[0]) f0, f1, pre = 0, 0, -1 for col in zip(*grid): mx, mx2, x = f0, f1, -1 for v, c in Counter(col).items(): res = (f0 if v!=pre else f1) + c if res > mx: mx, mx2, x = res, mx, v elif res > mx2: mx2 = res f0, f1, pre = mx, mx2, x return m*n - f0 第四题100276. 最短路径中的边 题目大意:给定一个包含n个节点的无向带权图,节点编号从0到n-1,总共有m条边。对于节点0为出发点,节点n-1为结束点的所有最短路,需要返回一个长度为m的布尔数组,如果edges[i]至少在其中一条最短路上,则answer[i]为true,否则为false。 ...
Java20天速成——进阶课程(4) 特殊文件 properties, xml 为什么要用这些特殊文件? 存储多个用户的:用户名, 密码, 家乡, 性别 日志技术 把程序运行的信息,记录到文件中,方便程序员定位bug, 并了解程序的执行情况等。 ...