算法心得-未完待续

  1. 处理有序数组时,先考虑双指针(对撞指针,快慢指针)。
  2. 形参引用类型,先考虑形参是否为 null 吧。
  3. 接2,迭代链表时,不要随便就 cur.next.next,你考虑过 cur.next 是null吗?
  4. 接3,如果不想考虑 null,可以试着新维护两个头、尾结点(dummyHead,dummyTail)。
  5. 能用 for 别用 while。
  6. 接5,头铁非要用 while,别在循环判定条件里更新控制变量!!!
  7. 不简洁但一眼就能看明白的代码,要优于那些形式上简洁但不直观的(不要为了简洁优雅而耗费时间,有那功夫想想性能咋提高吧)。
  8. 链表结构可以使用“依序交织”的手法“建立映射关系”,起到hashSet的效果。
  9. 递归有“top-down”与“bottom-up”两种方式,前者层序递归至底层即可得出结果;后者要将底层的结果再传播给最顶结点。
  10. 分治与递归很相似,区别是,前者将当前问题分成两个以上的子问题,结合所有子问题的结果解决当前问题;而后者是将当前问题变成一个更小的子问题,通过子问题的结果可以递推出当前问题的结果。
  11. 快排,双指针重合处恰为基准正确位置的原因:考虑最后一次有效赋值操作,无论是将low赋给high或是反之,由于是最后一次有效赋值,因此赋值后,赋值指针指向的位置刚好就是基准的正确位置,而下一步必是被赋值指针向赋值指针会合,因此双指针会合处永为基准正确位置。
  12. 快排的优势在于,一次快排后,某元素会在正确的位置,即,该元素左边的数都小于它,右边的值都大于它,即,该元素将搜索区间二分了(不考虑该元素恰为边界元素的恶劣情况)。可以利用此信息,决定下一次的搜索区间
  13. 接上一条,二分搜索(或二分查找)也并不一定要求数据有序,只要在搜索区间二分后,能够决定下一步的搜索区间是左还是右即可
  14. 递归可以不断深入,但当每步的可行解不止一种时,需要遍历当前所有可行解,也就是,在一条路(递归)走到头(剪枝,早停)后,要返回来回溯)再试试另一条路。(入栈出栈、链表、二叉树)。
  15. 滑动窗口法的本质是剪枝。剪枝即缩小解空间,要想如此,必须引入其他约束条件,合理利用信息
  16. 队列实现二叉树层序遍历,可以维护一个 tail 结点指示当前层,但更简单的做法是,获取当前队列内元素数,循环遍历,再进行下一层。如果只要求层序输出,可以不用队列,递归实现,只需将当前层数设为形参传入即可。
  17. 神仙资料推荐:LeetCode CookBook。 leetcode算法题,双百Go语言解法,国人编写,中文题解,很强大!。
  18. 位运算:X & (X-1) 清零最低位的1,X & -X => 得到最低位的1 。
  19. 记忆化搜索 ≈ 动态规划,只不过前者是 top-down,后者是 bottom-up。
  20. 贪心只能看到局部最优解,无法得到全局最优;而动规由于保存了过去的状态,因此能从全局的角度利用信息,求取全局最优解。此外,动规相比于遍历的暴力解法,做了剪枝的操作,只利用那些有用的信息。
  21. 写递归函数时,先处理继续递归的情况(因为占大多数),再处理终止递归的情况会更好。(循环语句同理)
六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,详细介绍了正向与逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程的理论与Matlab代码实现过程。文档还涵盖了PINN物理信息神经网络在微分方程求解、主动噪声控制、天线分析、电动汽车调度、储能优化等多个工程与科研领域的应用案例,并提供了丰富的Matlab/Simulink仿真资源和技术支持方向,体现了其在多学科交叉仿真与优化中的综合性价值。; 适合人群:具备一定Matlab编程基础,从事机器人控制、自动化、智能制造、电力系统或相关工程领域研究的科研人员、研究生及工程师。; 使用场景及目标:①掌握六自由度机械臂的运动学与动力学建模方法;②学习人工神经网络在复杂非线性系统控制中的应用;③借助Matlab实现动力学方程推导与仿真验证;④拓展至路径规划、优化调度、信号处理等相关课题的研究与复现。; 阅读建议:建议按目录顺序系统学习,重点关注机械臂建模与神经网络控制部分的代码实现,结合提供的网盘资源进行实践操作,并参考文中列举的优化算法与仿真方法拓展自身研究思路。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值