- 博客(10)
- 收藏
- 关注
原创 力扣刷题:玩筹码
题目描述 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 2 个单位,代价为 0。 将第 i 个筹码向左或者右移动 1 个单位,代价为 1。 最开始的时候,同一位置上也可能放着两个或者更多的筹码。 返回将所有筹码移动到同一位置(任意位置)上所需要的最小代价。 思路 当排序,贪心算法,多次排序,栈,常规解法都无法做时,要探索数学规律 为什么 数学规律找不到 最后都转化成统计元素个数的问题
2020-11-22 11:38:41
161
原创 力扣刷题:最后一块石头的重量
题目描述 有一堆石头,每块石头的重量都是正整数。 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。 思路 目前学的有 贪心算法,栈,排序(多次排序) 利用递归多次排序来找结果 为什么 不知道多次排序也可以 递归出口不知道 **–**特殊情况出口 **–**与递归语句出口 if()return 1; return max(a,b); 理解 特殊情况出口是底层递归的返回值 递归语句出口是从底部把返回值送回去 若return没有处理则放回原来的值
2020-11-08 22:23:51
131
原创 作业题收获[2020.11.6]
scanf理解 输入字符串,把空白符当做中止,但自动忽略空白符 输入数字与字符会自动读入。 scanf如果是已知数据类型,则用%d%c等 如果不知数据类型,则建立一个字符数组进行读入%s,再判断 易忘函数 随机 srand(time(null)) a = rand()% 判断是否是数字 isdigit(字符) 判断是整型还是浮点数 设置初始化为0的数组 储存后全加 将字符数组转化为整型或者浮点型 a = atoi(数组) b = atof(数组) ...
2020-11-07 20:52:05
136
原创 力扣刷题:整理字符串
题目描述 输入:s = “leEeetcode” 输出:“leetcode” 思路 双指针 1.先入后判断(简单而且少判断很多种情况) 2.先判断再入(复杂) 总结 类似于判断相邻两个元素性质时多用1 先压后判断 由于要初始化 j = -1; if(j>0) 判断,向后移动二个指针。 先判断再压 初始化包含二个条件 刚刚开始与之后j = 0 判断语句包含压入与移动指针,判断j 输出语句包含j=0与j!=0二种可能 ...
2020-11-07 16:36:06
167
原创 力扣刷题 :用闸操作构建数组
题目描述 给你一个目标数组 target 和一个整数 n。每次迭代,需要从 list = {1,2,3…, n} 中依序读取一个数字。 请使用下述操作来构建目标数组 target : Push:从 list 中读取一个新元素, 并将其推入数组中。 Pop:删除数组中的最后一个元素。 如果目标数组构建完成,就停止读取更多元素 思路 简单 收获 如何申请二维动态数组 先申请行数量个(char**)类型的数组,大小为(char*) 再循环申请每个行多少列的数组 ...
2020-11-07 15:45:42
205
原创 力扣刷题:删除字符串中相邻的重复项
题目描述 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一 基本思维 一指针遍历,另一指针操作原数组。 为什么 没有深刻理解 用于遍历的指针所指向的元素一开始不用写入原数组,而是经过特殊判断后再确定是否要写入。 特殊判断始终只判断闸顶元素和遍历元素,这些接下来的语句只要负责调闸顶指针。 如果不满足特殊判断,写入闸顶,如果满足闸顶指针退后或者不动。 流程 遍历语
2020-11-05 22:18:22
211
原创 力扣刷题:删除最外层括号
题目描述 输入:"(()())(())" 输出:"()()()" 解释: 输入字符串为 “(()())(())”,原语化分解得到 “(()())” + “(())”, 删除每个部分中的最外层括号后得到 “()()” + “()” = “()()()” 思路 同样的双指针思想 这次不仅是遇到特殊元素操作,还要加上计数功能 ...
2020-11-02 22:30:32
154
原创 力扣刷题:比较退格的字符串
题目描述 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑 器后,判断二者是否相等,并返回结果。 # 代表退格字符 思路 把原来数组作为闸,利用双指针,一指针遍历原先数组,另一 指针调整答案数组。 记得答案数组结尾要加0作为中止。 为什么 不知双指针的具体操作 一指针遍历,如果满足条件,答案数组等于原先数组,如果不满足条件,答案数组的指针调整。 ...
2020-11-02 21:54:53
126
原创 力扣刷题:实现strstr()
题目描述 给a,b两个字符串,找a在b中第一次出现的位置 基本思路 找a的第一个元素和b相等的元素,比较之后,若不能则返回比较。 解法 1.memcmp比较大小函数 2.双下标简化代码 总结 若题目涉及数组中字符串, 则考虑***字符串长度比较简化***,i,j双下标 ...
2020-10-25 11:59:33
226
原创 力扣刷题:下一个更大的元素
题目描述 给二个集合a,b,找a中每个元素在b中出现后右边比该元素大的值。 基本思路 找方法锁定b中a的元素的位置,再看b右边。 解题方法 一 三循环暴力解法 为什么做不出来 多个循环操作不严谨,导致后面太乱写不出来。 收获(寻找类型循环) 1.多循环下标是否能共用,减少代码量。 2,若要判断是否到数组末尾,放在循环里一起判断 此时:1,不用++。 2,size放在判断前面防止下标越界。 3,用三元运算符收尾。 二 新数组映射解法 收获(定位数组元素法) 1,将数组的值作为下标,数组的下标作为值。这样当输入
2020-10-25 11:44:27
150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅