- 博客(11)
- 收藏
- 关注
原创 TMS320F28335 DAY2 存储器与寄存器
通过#pragma预处理命令和DATA_SECTION将定义的寄存器指定到相应的存储单元内,并根据功能给存储单元取名,然后即可通过C语言和查阅数据开发手册来操作这些寄存器。比方说我们找到0x007010这个单元地址,那么可以通过查阅芯片数据手册了解到此单元是系统控制寄存器功能。因此为了更好区分此单元的功能和方便后续的程序开发,可以给这个单元取一个别名SysCtrlRegs,那么这个SysCtrlRegs就是寄存器,并且这个寄存器地址就是0x007010。这个过程就是寄存器映射。
2024-06-11 17:59:25 1804
原创 刷题记录——34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 $O(\log n)$ 的算法解决此问题吗?
2023-04-12 12:00:44 80
原创 刷题记录——35.搜索插入位置
希望通过这道题目,大家会发现平时写二分法,为什么总写不好,就是因为对区间定义不清楚。确定要查找的区间到底是左闭右开[left, right),还是左闭又闭[left, right],这就是不变量。然后在二分查找的循环中,坚持循环不变量的原则,很多细节问题,自然会知道如何处理了。
2023-04-12 11:53:13 68
原创 刷题记录——704. 二分查找
二分法是非常重要的基础算法,为什么很多同学对于二分法都是一看就会,一写就废?其实主要就是对区间的定义没有理解清楚,在循环中没有始终坚持根据查找区间的定义来做边界处理。区间的定义就是不变量,那么在循环中坚持根据查找区间的定义来做边界处理,就是循环不变量规则。本篇根据两种常见的区间定义,给出了两种二分法的写法,每一个边界为什么这么处理,都根据区间的定义做了详细介绍。相信看完本篇应该对二分法有更深刻的理解了。
2023-04-12 11:49:50 52
原创 刷题记录—— 206反转链表
题意:反转一个单链表。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL。
2023-04-12 11:46:26 55
原创 递归时间复杂度和算法优化的一些思路
对于递归的时间复杂度,毕竟初学者有时候会迷糊,刷过很多题的老手依然迷糊。本篇我用一道非常简单的面试题目:求x的n次方,来逐步分析递归算法的时间复杂度,注意不要一看到递归就想到了O(logn)!同样使用递归,有的同学可以写出O(logn)的代码,有的同学还可以写出O(n)的代码。对于function3 这样的递归实现,很容易让人感觉这是O(log n)的时间复杂度,其实这是O(n)的算法!
2023-04-11 16:29:47 161
原创 时间复杂度和空间复杂度
时间复杂度是一个函数,它定性描述该算法的运行时间。我们在软件开发中,时间复杂度就是用来方便开发者估算出程序运行的答题时间。那么该如何估计程序运行时间呢,通常会估算算法的操作单元数量来代表程序消耗的时间,这里默认CPU的每个单元运行消耗的时间都是相同的。假设算法的问题规模为n,那么操作单元数量便用函数f(n)来表示,随着数据规模n的增大,算法执行时间的增长率和f(n)的增长率相同,这称作为算法的渐近时间复杂度,简称时间复杂度,记为 O(f(n))。这里的大O是指什么呢,说到时间复杂度,
2023-04-11 15:40:11 115 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人