如何让代码更加优雅?

欢迎各位大佬改正、添加内容!

这是我对比代码后,问ai得出的。 肯定有更多让代码变优雅的知识,真诚的希望大佬们可以分享一下自己的心得

今天写了一个题,明明是和题解一样的逻辑,写出来的代码却不如题解那样简洁优雅。 于是,我了解到如下知识: 1.设计循环不变式(量) 2.大多数特殊情况(特殊case)都是不需要处理的,因为特殊case被包含与普遍情况中

一、循环不变量 在循环中,含义保持不变的那个变量(不管有多少次循环,这个变量含义都不会改变)

题目:找到最靠左的中心下标,使得它 左边元素和 == 右边元素和,找到了返回它,找不到返回-1 leetcode 724 (我写第二个循环,想先处理 i=0 时的左元素和,于是写出来很麻烦的代码) image.png

如何定义? 1.想明白这个变量代表什么 sum 代表左元素和

2.循环第一次开始时,它初始化为多少才能代表这个含义? 循环开始时,i = 0 ,左元素和sum = 0 才对,这样我们就不需要再单独处理 i = 0 这个特殊case了

3.进行下一步循环前,我要怎么更新它才能让他代表这个含义? 开始下次循环前,让sum累加此时的nums[i],这样sum才是左元素和

=============== 本题每个循环要做的事:

  1. 求左元素和
  2. 判断 左==右 成立不,成立就返回
  3. 不成立就更新左元素和,开始下一个循环

循环中,判断放在了前面,更新放在了后面,就是总结完上面内容后得出的一个规律

相关专栏

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
gGaumgchn
作者分享
做题总结day2(拆分和细节,数学,模拟)
2
Day 4 ✅ 今天做了: 1.学了vector容器 2.做了三道关于矩阵的题 3.彻底搞明白了插入排序和选择排序 ⏰ 明天计划: 1.清空二维数组的题 2.学习字符串和双指针(先各写两道题,题有点多) 3.巩固vector 4.学归并排序 5.周二老师要讲栈,抽时间把栈复习了 📚 今日感悟: 三道题做了快3个小时,还是暴力解法,我写代码的能力果然还是太弱了。 是不是要多写点模拟的题目,哈哈
2
Day 3 这里提醒一下自己,每复习完一个章节去看一下左程云的课再巩固 ✅ 今天做了: 1. 复习数组 2. 力扣四道题 3. 学习了冒泡排序,之前没学到位。。。这次算是彻底搞明白了 ⏰ 明天计划: 1.继续复习数组 2.力扣 3.彻底搞明白选择排序,插入排序。 4.数组复习完了就复习链表 📚 今日感悟: 今天再看冒泡排序时,发现自己之前的学习简直就是眼高手低啊!怪不得编不出来代码。 之前都是学会了算法之后就觉得自己学会了,压根不上机实现代码。 以后就跟着:学会数据结构的概念 ---> 理解基本操作的算法 ---> 立即上机实现,找自己被卡住的点,再着重去看这一点 几步走 感觉自己有畏难情绪,我要刻意地,努力地去克服
2
Day 2 ✅ 今天做了: 1.今天把树给看完了,图开了一丢丢。 ⏰ 明天计划: 开学以来,用力实在有些猛了,基本一天都在学习,但是没有专心的去学某一门,一直在涉猎。 今天开始脑子就有点懵了。明天不打算学太难的东西了,放松放松 1.打算按“数据结构学习路线”走,把算法基础、数组和集合、链表复习了 2.最近对逻辑学比较感兴趣,打算去图书馆看会儿《简单的逻辑学》 📚 今日感悟:我好累啊啊啊啊啊,又迷茫又累。不过,好在昨天发现了这个网站,第一次求助,小y就给我推荐了学习路线😋,不那么迷茫了🥰(对了,因为大一学的是c语言,所以我打算学c++路线。c++和Java路线除了语言不同,其它应该都是一样的吧?求解答)
3
Day 1(补昨天) ✅ 今天做了: 1. 写了4道双指针题 2. 开始了自己的第一个项目 WhaleMarket。做了其中的注册、登录部分 ⏰ 明天计划: 📚 今日感悟:动手写项目前,无限焦虑,总觉得自己这也没学,那也没学,感觉自己写不出来。于是问豆包,发现这项目居然这么的简单。果然千遍万遍,不如经手一遍 求解答: 我双非软件工程大一,大学打算卷实习。 目前只学了c和c++基础语法,数据结构(才到树,目前只实现过单链表的一些操作) 希望各位前辈可以指点指点迷津,不知道实习这条路要怎么走下去
2
下载 APP