自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 问答 (2)
  • 收藏
  • 关注

原创 git关于ssh我遇到的问题解决链接

新手,第一次用gitee上传程序,花了好几天(有空就弄)才搞定,刚开始弄https,但我的用户名和密码都不知道,网上找的办法都重置不了。下面是我弄ssh时遇到的问题。git修改远程仓库 remote origin。

2023-12-15 11:50:25 501

原创 绩效考核管理项目|记录2

selectionmode,右键时的选择模式,这里选一行高亮,其他的有全选、一列、行首、列首。然后关于数据库的提示(对我自己,因为是第一次用),把所有数据表都给设置好,确认好之后再去打代码,不然后面因为数据库的原因再跑去修改数据库很麻烦,光是设置自增列就要重新弄,以为属性能改,找半天。突然遇到问题,在新建人员后没办法完成创建,提示缺少ID的数据,后面我才知道是数据库的表没有设置ID列自动增加数,现在写一下怎么设置自增列。有事耽误,好多天没去写,写得乱,将就着看吧。这段代码写入搜索方法里面就能实现功能。

2023-11-30 11:08:55 419

原创 代码随想录算法训练营|结营总结

回溯和贪心这两个有段时间没去写,有点时间就去看题,时间赶就看看题解,自己照猫画虎去写代码,之后有空的还得重新去学习。(回溯的三部曲还是很好用的,然后贪心真的是两极分化,有些题一下就能看出来,有的看题解还是懵的)到二叉树就蒙了,都没想到有这种结构,刚学起来完全学不进去,视频、题解反复看,看完也是懵懵懂懂,后面自己结合卡哥和其他的视频,去画图,才能学得进去。断断续续刷了两个多月,第一次接触数据结构,刚开始写也没那么难,数组、链表、哈希表、字符串都不是很难,虽然有的题有去看题解,不过看完题解后能理解。

2023-11-24 20:44:07 379

原创 代码随想录算法训练营|五十九~六十天

单调栈,也和每日温度一样三种情况,如果数组[i]的元素和栈头相同,得先弹出栈内元素再压入,因为最后求最高值是相同元素取最右边的元素,左边用不到;如果大于,取栈头做mid,然后取左右两遍的最小值做高,宽度是i-栈头(不是mid,mid已经弹出)-1,最后相乘就是容积。双指针法,例如i=4,然后从i开始向左右遍历直到找到左右的最高点,再找到左右的最小值减去i的高得到多少个容纳单位。这题主要得注意数组前后都要加上0,如果没加上0,数组元素循环到栈内会一直跳过情况三,具体看代码随想录。

2023-11-21 21:09:29 488

原创 代码随想录算法训练营|五十七天

压入栈时的元素和栈内的元素比较,有三个情况,栈内元素大于等于压入栈时的元素,此时压入栈内;如果小于压入栈内的元素,先记录result,再在栈中弹出元素,一直循环,直到大于等于压入栈时的元素,才压入栈内。

2023-11-20 20:19:11 79

原创 代码随想录算法训练营|五十六天

递推公式:当s[i]和s[j]不相等,false;相等时,情况一,j-i<=1,说明要么“a”或者“aa“这两种情况;情况二:dp[i+1,j-1]是true,例如”cbabc“。dp含义:表示区间内[i,j]是否有回文子串,有true,没有false。dp含义:表示区间内[i,j]的回文子序列的长度dp[i,j](这里图画错,j和i换个位置)

2023-11-19 16:00:00 157

原创 代码随想录算法训练营|五十五天

因为两个字符串都能删除,所以字符不匹配的话就有三个方向取最小值赋值给dp[i,j],不过这里dp[i-1,j-1]+2=dp[i,j-1]+1,从字面上理解 就是 当 同时删word1[i - 1]和word2[j - 1],dp[i][j-1] 本来就不考虑 word2[j - 1]了,那么我在删 word1[i - 1],是不是就达到两个元素都删除的效果,即 dp[i][j-1] + 1。(抄的,还是没搞懂,只能不省略三个方向一起写)word1增加d的操作数和word2删除d的操作数是一样的。

2023-11-16 16:24:53 49

原创 代码随想录算法训练营|五十四天

这里递推公式中,有相等和不相等两种情况,相等字符是dp[i,j] = dp[i-1,j-1]+dp[i-1,j],例如下图的s和t字符串,循环到最后一个c时,dp[i-1,j-1]是首次遇到的次数,dp[i-1,j]是在此的循环之前所累计的次数,两个相加就是循环到最后一个c时所有的累计结果。如果不相等,就不需要考虑dp[i-1,j-1]

2023-11-16 10:38:21 42

原创 绩效考核管理项目|记录1

connectionString="Data Source=服务器名称(这里是可以改成网段的);datagridview:能显示行和列的数据。编辑器能手动添加内容,如果不添加,会自动按照代码的方法名去自动添加名称。代码和上面职位库的代码相同,需要哪个列就自己添加哪个,这边因为有些列不需要,数据库的代码得专门改一下。(这段代码的含义:<add name="MyConnectionString"

2023-11-15 17:41:17 74

原创 代码随想录算法训练营|五十三天

这题的递推,和最长重复子数组差不多,只是那题是相同长度,所以递推可以往斜推,这题两字符串长度不一样,碰到不同字符要i-1或者j-1的方向走。和贪心差不多,先加,再比较大小。最大子序和(动态规划)

2023-11-14 16:27:00 33

原创 代码随想录算法训练营|五十一天

有点像双指针的操作,例如{2,5,6,4,3}(写不出来,画图)这个图就很清楚递推怎么来的。数组不连续递增就重新计数。

2023-11-13 21:07:19 127

原创 代码随想录算法训练营|第五十天

买卖股票的最佳时机含冷冻期。买卖股票的最佳时机含手续费。

2023-11-11 10:56:41 59

原创 代码随想录算法训练营|四十五天~四十九天

如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。同样dp[i][1]取最大的,dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0]);一定是选最大的,所以 dp[i][1] = max(dp[i-1][0] - prices[i], dp[i - 1][1]);买卖股票的最佳时机||(动态规划)

2023-11-11 09:50:58 42

原创 代码随想录算法训练营|动态规划三十八天~四十三天

动态规划五部曲:1、确定dp数组以及下标的含义2、确定递推公式3、dp数组如何初始化4、确定遍历顺序5、举例推导dp数组。

2023-11-08 20:43:42 44

原创 代码随想录算法训练营三十四~三十六天|贪心

否则,刷新气球2的终点(气球1和气球2的终点取最小,此时气球1和气球2的重叠部分成[2,6],取6),要点:把整个字符串遍历,并且收集好每个字符最后出现的下标值,然后就是根据收集的hash去遍历字符串,遍历过程中只要i==字符最后出现的下标值,就记录到result。要点:和引爆气球相同的思路,只要intervals[i][0]>=end(第二个区间的下标0比第一个区间的下标1大,说明不重叠),result++,最后结果数组长度减去result。难点的地方在代码实现,具体看备注。用最少数量的箭引爆气球。

2023-11-03 17:05:04 44

原创 代码随想录算法训练营三十一~三十三天|贪心

要点:按题目要求,设起点在0,然后循环数组,记录gas[i]-cost[i]的差值,如果消耗比加油大(也就是gas-cost<0),就起点+1,清空累加值,最后把所有结果累加进目标累加值,如果小于0,返回-1,大于返回起点的标志位。要点:先按照绝对值的大小从小到大排序,然后for循环从最后往前循环,只要有取反,就k--,直到k=0,或者数组循环完成,k还大于0,此时直接取反数组第0位,最后求和。要点:就一个一个去算它能走的最大步数,如果比之前的index还大就更新index,小就不更新;

2023-10-30 23:14:48 24

原创 代码随想录算法训练营第二十五~二十八天|组合问题、分割、子集、排列

used[nums[i]+100] == 1,验证之前收集的元素是否存在。其他的和子集||相似,只有递归逻辑不同,题目说了可以重复,但是只能由前向后,不能后面的元素找到前面一样的元素,然后就是记录方式,可以字典或者直接数组记录,题目已经提供的范围在[-100,100]之间,所以创建新二维数组201。要点:这里的全排列,是把所有的排列组合收集,例如{1,2,3},结果是[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]],但是要求集合里的元素不重复。

2023-10-25 21:37:15 32

原创 代码随想录算法训练营第二十三天

参数和输出:一般只要参数,不用输出;停止条件,:也是if语句,里面写存放结果和return;解决的问题:组合、切割、子集、排列、棋盘。回溯法解决的问题都能抽象为树形结构。一种回溯搜索法,属于纯暴力搜索。

2023-10-17 21:00:42 49

原创 代码随想录算法训练营第二十天~二十二天

将有序数组转换成二叉搜索树。二叉搜索树的最近公共祖先。把二叉搜索树转换成累加树。二叉搜索树的最小绝对值。二叉树的最近公共祖先。二叉搜索树的插入操作。删除二叉搜索树的节点。

2023-10-16 17:46:30 25

原创 代码随想录算法训练营第十九天

思路:按题目要求,单层逻辑是先取数组最大值做节点,然后最大值的左边就是左字树,右边就是右子树。如果left>right,则表示叶子节点。

2023-10-12 15:46:45 30

原创 代码随想录算法训练营第十八天

递归:参数:root,初始深度,目标值,目标值所在的深度;逻辑:左右节点不空,则进去循环,注意depth要加1,以完成回溯(depth+1等效于在函数外depth++,退出函数后depth--,详见程序)。第四步,切割中序数组,切成中序左数组和中序右数组,第五步,切割后序数组;思路:得先清楚题目要求的左下角的值不是特值左节点的值,而是在那一层中靠近左边的节点,也就是说左右节点都可能是左下角的值。(路径总和||)主要是递归函数不用返回值,还有递归节点后,不止要返回到父节点,还要把list压入的元素弹出。

2023-10-11 17:37:36 23

原创 代码随想录算法训练营第十六天

思路:参数:root;停止条件:左节点为空,或者左节点的左右孩子为空;逻辑:按照后序遍历的思路,先处理左边的左叶子,要注意如果左叶子成立(左节点的左右孩子为空,则为左叶子),取得数值后再处理右边的左叶子,左右相加返回。的左右两个子树的高度差的绝对值不超过 1),如果节点为null,则平衡;如果节点的左右孩子相差高度的绝对值大于1,就是不平衡,小于等于1,返回高度值。有时间再重新理清一遍,现在还不能完全理解。思路:按照题中的定义(

2023-10-10 17:12:43 25

原创 C#winform学习小项目|串口助手开发

把几个单独的控件整合为一组(例如开关或者图片那样),使控件之间会相互影响。这个可以设置对话框的纵横是否有拉条。划分一块区域并写上标题(例如设置)这个设置要不要多行显示。

2023-10-09 19:09:48 90

原创 代码随想录算法训练营第十五天

递归:主要要判断当前节点的左右结点为null的情况,左空右不空就要rightdepth加1,右空左不空就leftright加1,直到root为null才返回左右节点的深度。思路:递归:参数是root,终止条件是root为null,逻辑就是左边递归到null,然后右边也递归到null,最后比较哪个大,再加中间值(1)返回。思路:迭代:和找最大深度一个思路,不停循环,不过停止条件是如果左右结点为null,则要直接退出循环返回最小值。思路:迭代:照模版套,然后得加个记录节点的int就行了。完全二叉树的节点个数。

2023-10-09 15:04:48 22

原创 代码随想录算法训练营第十四天

思路:主要利用到队列,先得到每层结点的元素个数,此时队列内的元素为同一层的全部结点,然后访问这些结点,并将这些结点的非空子结点入队列。一轮访问结束之后,当前层的全部结点都已经出队列并被访问,此时队列内的元素为下一层的全部结点,下一轮访问时即可访问下一层的全部结点。如果左右结点不为空,则左树的左结点和右树的右结点&&左树的右结点和右树的左结点&&左树的中结点和右树的中结点比较得出true或者false。按题目要求只要输入输出二叉树,终止条件为二叉树为null,逻辑就是按前序递归,左右交换结点,然后递归。

2023-10-07 20:28:53 32

原创 代码随想录算法训练营第十三天

在二叉树中,可以通过遍历算法来按照一定的顺序访问树中的节点,常见的遍历方法有前序遍历、中序遍历和后序遍历。二叉树是一种常见的树状数据结构,它由节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的遍历方式:深度优先遍历(先往深走,遇到叶子节点再往回走)、广度优先遍历(一层一层的去遍历)2.二叉树的递归遍历(前序(中左右)、中序(左中右)、后序(左右中))3. 左子树和右子树也是二叉树,它们分别是原二叉树的左子树和右子树。二叉树的种类:满二叉树、完全二叉树、二叉树搜索、平衡二叉树搜索。

2023-10-05 19:46:48 22

原创 代码随想录算法训练营第十二天

思路:用字典收集数组中的元素,之后创建优先级队列(默认小顶堆),小顶堆会优先把value较小的值排在队列末尾,如果队列Count等于k+1,就移除队列末尾,直到循环结束,结束后再输出给list排列返回toarray。思路:先写类MyQueue,函数Enqueue,实现当压入值比队列中最后一个元素大时,就移除队列末尾元素,直到队列没有元素或者队列末尾元素大于压入值跳出,并把压入值加入到队列末尾;函数Dequeue,功能是当队列中的Count已经到K值,则移除队列中的第一个元素,使压入值能加入到队列末尾;

2023-10-04 17:34:59 21

原创 代码随想录算法训练营第十一天

思路:因为题目给的是固定的,成对的true,不成对的false。所以foreach循环前半段(括号左边'('、'{'、'[')一个个压入栈中,后半段就把栈中弹出一个个匹配,不对就返回false,全部匹配就返回true。总结:今天的题目之前都刷过,思路很容易想到,就是代码跟以前写得大体相似,后面再刷的时候继续优化代码。思路:遍历数组,数字就压入栈中,符号则弹出栈的两个元素去运算,运算完再压入栈中。思路:遍历,然后栈中有元素就弹出判断是否相同,和有效的括号这道题一样的思路。150.逆波兰值的表达式。

2023-10-03 17:42:22 20

原创 代码随想录算法训练营|232.用栈实现队列、225.用队列实现栈

完成上述操作后,queue2为空,queue1的队首元素是新添加的元素,queue1内的其余元素和顺序不变。因此上述操作的效果是在 queue1的队首增加了新添加的元素,queue1的队首和队尾分别对应栈顶和栈底。由于栈的特点是后进先出,因此使用队列实现栈时,需要维护队列内的元素顺序,使得队首元素是最后入队的元素。使用两个队列实现时,queue1的作用是存储元素,queue2的作用是辅助操作。为了实现栈的功能,需要保证每次入栈操作之后,queue1的队首元素总是新添加的元素。232.用栈实现队列。

2023-10-02 11:03:08 33

原创 代码随想录算法训练营第七天

思路:不用考虑太多,主要在第一轮for循环中start+=(2*k),有这一步直接解决题目提出的要求。151.反转字符串中的单词。541.反转字符串 ||LCR122.路径加密。LCR128.动态口令。

2023-09-27 20:00:00 27

原创 代码随想录算法训练营|454.四数相加||、383.赎金信、15.三数之和、18.四数之和

最后得注意去重,一个是判断i是否和前面的i-1指向的元素相同,相同进入新一轮循环;思路:四个数组分成两大组独立循环,遍历nums1+nums2的所有元素和并且加入到字典中,再遍历nums3+nums4,一个个去和字典存在的值比较(注意比较需要取负数)。总结:今天这几道题挺好写的,看文本解析大概知道要怎么写,麻烦点的就三数之和,考虑的东西有点难想到,多加练习就明白题目的套路,其他方面没有太大的问题。思路:和三数之和一样套路,就是要多一个循环,还有题目提供目标值,不需要去判断数组大于0的情况。

2023-09-26 15:36:35 43

原创 C#winform学习小项目:倒计时器

功能:实现下拉框选择时间(5秒至500秒),启动后倒计时,途中可暂停,继续启动。

2023-09-25 20:10:07 598

原创 代码随想录算法训练营|242.有效的字母异位、349. 两个数组的交集、202. 快乐数、1. 两数之和

总结:今天关于哈希表的题,其实都没用到,全都用C#的字典,主要是我对字典熟悉,加上字典好像是哈希表衍生出来的数据类型。思路:数组循环存储在字典中,判断字典的中是否存在target-nums[i](之前没想到方法能直接放target-nums[i]的式子),减去的结果字典有就返回新数组;对于一个数进行一次操作,可以将数转换成字符串之后遍历字符串的每一位计算平方和,也可以直接对给定的数做数位分离计算每一位的平方和,这里使用的是数位分离的做法。当出现循环时,如果 n=1 则返回 true,否则返回 false。

2023-09-25 16:19:46 69

原创 代码随想录算法训练营第四天|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07. 链表相交、142.环形链表II

思路:双指针法,分别在指向两个链表的头结点,然后一直循环,有指针到null就指向另一个链表,直到两个指针指向元素相同或者同时指向null,跳出循环,输出其中一个指针。怎么找到入口,也是靠双指针,一个指向原来快慢指针的指向元素,另一个从起点开始,之后一直循环直到两指针相同。思路:利用双指针解决,因为是删除倒数的第N个节点,然后相当于快指针指向null,慢指针指向目标节点,快慢指针相差N。可以先让快指针指向head之后的n个节点,再同时移动快慢指针就能使慢指针指向目标节点。24. 两两交换链表中的节点。

2023-09-23 21:02:21 219

原创 代码随想录算法训练营第三天|203.移除链表元素、707.设计链表、206.反转链表

思路:先写在链表中插入元素,也就是在目标节点之前加入,其实就是打断原有的指向,把指向切到temp就可以了,不过要注意temp要先指向head,再dummyhead指向temp,相反的话会丢失head元素。接下来判断temp.next.val == val,是则跳过temp.next所指的元素,指向temp.next.next的元素;3、循环结束,最后要记得返回dummyhead.next,因为dummyhead是在原链表删除元素后的结果,temp只是指向链表中的元素。203.移除链表元素。

2023-09-22 19:39:28 352

原创 代码随想录算法训练营第二天|977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

思路:双指针的方法,快指针循环直到sum>=target,再对快慢指针包括的数组的长度比较,比较后减去慢指针i所属的元素,再i++。结束一遍循环后再判断sum是否大于等于target,是就继续减去慢指针,再i++,否则再for循环一遍,快指针往后移动,直到sum>=target或者到达数组的长度。总结:前两道题看一下视频知道是用双指针后很容易就解决,不过这第三道螺旋矩阵看视频一时间没想起来,后面多画几张图之后才明白是怎样的一个思路。问题:现在能跑正方体的矩阵,但是长方体的矩阵还没跑出来。

2023-09-21 15:29:22 469

原创 代码随想录算法训练营第一天| 704.二分查找、27.移除元素、34、35。

在while循环直到left

2023-09-20 16:31:31 625

原创 C#创建联合类型的结构

由于StructLayoutAttribute 可以同时应用于结构和类,在创建联合数据类型时也可以使用类。联合(union),作用和其他语言的联合一样。使用时要注意存储的和提取的数据类型是不是一样。注意偏移量,这个和博图里的变量设置偏移量一个道理,每个类型都要注意占多少位。

2023-09-16 16:00:00 220

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除