当前位置: 首页 > news >正文

制作大型网站开发android软件开发实例

制作大型网站开发,android软件开发实例,北京做网站建设的公司排名,2018年网站开发语言排行目录 week21. 二维数组中的查找题目题解(单调性扫描) O(nm) 2.替换空格题目题解(线性扫描) O(n)(双指针扫描) O(n) 3.从尾到头打印链表题目题解(遍历链表) O(n) week2 1. 二维数组中的查找 题目 题解 (单调性扫描) O(nm) 核心在于发现每个子矩阵右上角的数的性质#xff1… 目录 week21. 二维数组中的查找题目题解(单调性扫描) O(nm) 2.替换空格题目题解(线性扫描) O(n)(双指针扫描) O(n) 3.从尾到头打印链表题目题解(遍历链表) O(n) week2 1. 二维数组中的查找 题目 题解 (单调性扫描) O(nm) 核心在于发现每个子矩阵右上角的数的性质 如下图所示x左边的数都小于等于xx下边的数都大于等于x。 因此我们可以从整个矩阵的右上角开始枚举假设当前枚举的数是 x 如果 x 等于target则说明我们找到了目标值返回true如果 x 小于target则 x 左边的数一定都小于target我们可以直接排除当前一整行的数如果 x 大于target则 x 下边的数一定都大于target我们可以直接排除当前一整列的数 排除一整行就是让枚举的点的横坐标加一排除一整列就是让纵坐标减一。 当我们排除完整个矩阵后仍没有找到目标值时就说明目标值不存在返回false。 时间复杂度分析 每一步会排除一行或者一列矩阵一共有 n 行m 列所以最多会进行nm 步。所以时间复杂度是 O(nm)。 class Solution { public:bool findNumberIn2DArray(vectorvectorint matrix, int target) {if (array.empty() || array[0].empty()) return false;int i 0, j array[0].size() - 1; // j 初始为右上角的位置while (i array.size() j 0) {if (array[i][j] target) return true;if (array[i][j] target) --j; // 锁定当前行排除当前列else i; // 排除当前行往下搜索}return false;} };2.替换空格 题目 题解 (线性扫描) O(n) 这个题在C里比较好做我们可以从前往后枚举原字符串 如果遇到空格则在string类型的答案中添加 %20如果遇到其他字符则直接将它添加在答案中 但在C语言中我们没有string这种好用的模板需要自己malloc出char数组来存储答案。 此时我们就需要分成三步来做 遍历一遍原字符串计算出答案的最终长度malloc出该长度的char数组再遍历一遍原字符串计算出最终的答案数组 时间复杂度分析 原字符串只会被遍历常数次所以总时间复杂度是 O(n)。 class Solution { public:string replaceSpaces(string str) {string res;for (auto x : str)if (x )res %20;else res x;return res;} };(双指针扫描) O(n) 在部分编程语言中我们可以动态地将原数组长度扩大此时我们就可以使用双指针算法来降低空间的使用 首先遍历一遍原数组求出最终答案的长度length将原数组resize成length大小使用两个指针指针i指向原字符串的末尾指针j指向length的位置两个指针分别从后往前遍历如果str[i] 则指针j的位置上依次填充0, 2, %这样倒着看就是%20如果str[i] ! 则指针j的位置上填充该字符即可。 由于i之前的字符串在变换之后长度一定不小于原字符串所以遍历过程中一定有i j这样可以保证str[j]不会覆盖还未遍历过的str[i]从而答案是正确的。 时间复杂度分析 原字符串只会被遍历常数次所以总时间复杂度是 O(n)。 class Solution { public:string replaceSpaces(string str) {int len 0;for (auto c : str)if (c ) len 3;else len;//str.size() 字符串中有几个字符大小就为几 //定义两个指针字符串的长度和实际下标位置差1int i str.size() - 1, j len - 1; str.resize(len); //调整字符串大小while (i 0) {if (str[i] ) {str[j--] 0;str[j--] 2;str[j--] %;}else str[j--] str[i];i--;}return str;} };3.从尾到头打印链表 题目 题解 (遍历链表) O(n) 单链表只能从前往后遍历不能从后往前遍历。 因此我们先从前往后遍历一遍输入的链表将结果记录在答案数组中。 最后再将得到的数组逆序即可。 语法补充 begin 语法iterator begin(); 解释begin()函数返回一个迭代器,指向字符串的第一个元素. end 语法iterator end(); 解释end()函数返回一个迭代器指向字符串的末尾(最后一个字符的下一个位置). rbegin 语法const reverse_iterator rbegin(); 解释rbegin()返回一个逆向迭代器指向字符串的最后一个字符。 rend 语法const reverse_iterator rend(); 解释rend()函数返回一个逆向迭代器指向字符串的开头第一个字符的前一个位置。 时间复杂度分析 链表和答案数组仅被遍历了常数次所以总时间复杂度是 O(n)。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:vectorint printListReversingly(ListNode* head) {vectorint res;while (head) {res.push_back(head-val);head head-next;}return vectorint(res.rbegin(), res.rend()); //反向迭代器} };
http://www.sadfv.cn/news/62081/

相关文章:

  • 怎么创建个人网站网站建设运营期末考试
  • 怎么建个网站wordpress访问格式丢失
  • 太原网站建设小程序我的世界服务器网站建设
  • 凌源网站建设定制公众号需要多少钱
  • 烟台城乡建设住建局网站asp.net商务网站开发
  • 三河市建设局网站网页美工设计软件
  • 乐清哪里有做网站可以登陆的wordpress
  • 企业网站建设的成本构成常州微信网站建设流程
  • 旅游网站的建设的文献综述标签在数据库wordpress
  • 网站展现形式免费商标logo在线制作软件
  • 网站开发的基本技术阳江市招聘最新招聘
  • 培训制作网站宁波建设工程学校招生简章
  • 深圳电商平台网站自助建站系
  • 海口手机版网站建设seo网站管理
  • 公司做网站最低需用多少钱设计师免费素材网站推荐
  • 个人网站做影视广东住房和城乡建设厅网站首页
  • flash 做ppt的模板下载网站有哪些新洲区城乡建设局网站
  • 广东品牌网站建设报价wap百度
  • 阜阳万维网站建设网站店铺分布图怎么做
  • 网站哪类业务建设投入会带来间接收益消防维保公司宣传册设计样本
  • 网站如何建设二级域名代理上海模板建站平台
  • 湖南响应式网站建设价位商贸公司网站模板
  • 网站主页面布局怎么做上海最好的网吧
  • 程序员自己做网站怎么赚钱软文素材网站
  • seo网站推广的主要目的网页设计论文结论
  • 网站建设市场价格网站导航网站怎么做
  • wordpress 网站开发wordpress兼容ie6主题
  • 越秀网站建设网站建设设计技巧
  • 怎样免费建设个人网站四川省城乡住房与建设厅网站首页
  • 重庆市建设工程信息网站诚信分网站的跳出率