数据结构 每日一练 :选择 + 编程

这篇具有很好参考价值的文章主要介绍了数据结构 每日一练 :选择 + 编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

选择

编程


数据结构 每日一练 :选择 + 编程,数据结构,数据结构,每日一练,编程

选择

数据结构 每日一练 :选择 + 编程,数据结构,数据结构,每日一练,编程

A .   a[0][2*1]     B.  a[1][3]   C.  a[4-2][0]  D.  a[0][2+2]

答案:D

解析:题目给的是一个3行4列的数组,而D选项是 a[0][2+2] = a[0][4],相当于取得是第1行第5列的元素,越界了。需要注意的是数组下表是从0开始的。下标从0开始!下标从0开始!下标从0开始!

数据结构 每日一练 :选择 + 编程,数据结构,数据结构,每日一练,编程

A.  r - f           B.  r - f + 1        C.  ( r - f ) mod n + 1    D.   ( r - f + n ) mod n

答案:D

解析:注意本题的索引下标是从1开始 所以循环队列中最多有n个元素。在循环队列中,头指针指向队列当中的第一个元素,而尾指针指向最后一个元素的下一位。

队头指针为front,队尾指针为rear;队列中元素的最大个数MaxSize

入队时队尾指针加1取模:(rear+1)%MaxSize

出队时队头指针加1取模:(front+1)%MaxSize

队列长度(元素个数):(rear-front+MaxSize)%MaxSize

队满条件:(rear+1)%MaxSize==front

队空条件:front == rear

数据结构 每日一练 :选择 + 编程,数据结构,数据结构,每日一练,编程

A.  1         B.  3       C.  4       D.  编译出错或其他地方不对

答案:D

解析:代码段中定义数组a方式错误,二维数组定义时不允许省略列数,无法编译通过。声明数组必须指定列!声明数组必须指定列!声明数组必须指定列!

数据结构 每日一练 :选择 + 编程,数据结构,数据结构,每日一练,编程

A.  a[99-n]      B.  a[100-n]     C.  a[101-n]    D.  *(a + 101 - n)

答案:B

解析:数组元素的索引值从0开始,所以正数第n个元素的索引值是(n-1)。元素总数为100的数组倒数第n个元素的索引值是(100-n)。

数据结构 每日一练 :选择 + 编程,数据结构,数据结构,每日一练,编程

A.  3              B.  4              C.  2                D.  5

答案:C

解析:二分查找即折半查找,mid = ( low + high ) / 2,且是向下取整的,第一次mid的指向32,然后high指向mid-1的位置;第二次mid指向15,正好与所要找的值相等。

编程

 题目:

给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。

数据范围:0≤n,m≤10,矩阵中任意元素都满足 ∣val∣≤100

要求:空间复杂度 O(nm) ,时间复杂度 O(nm)

思路:

        把矩阵看成一圈一圈的,每次循环遍历一个圈,每一圈的遍历中又分为上,右,下,左四个边界的遍历,每一个边界遍历完之后要向里层缩小。在遍历边界的时候要注意的是,每一个边的遍历必须是相同的规则,比如,下图中,上边界遍历从1开始,到倒数第二个元素3截止,遍历结束,即只遍历前三个元素,同样在其他的边进遍历的时候也是如此。这样才能保证所有的元素都会被遍历而且不会有重复。

        一轮控制一个变量,遍历上面一行时,变动列数;遍历右边一列时,变动行数;遍历下面一行时,变动列数;遍历左边一列时,变动行数。

        遍历一圈是4个for循环,但在一圈中的边界遍历的时候都有可能退出循环,所以每个for之后都要有一个循环出口,可以用元素的个数为条件,当元素个数超过矩阵中的元素个数的时候就退出循环。

数据结构 每日一练 :选择 + 编程,数据结构,数据结构,每日一练,编程    数据结构 每日一练 :选择 + 编程,数据结构,数据结构,每日一练,编程文章来源地址https://www.toymoban.com/news/detail-704298.html

核心代码

#include <stdio.h>
#include <stdlib.h>
int* spiralOrder(int** matrix, int matrixRowLen, int* matrixColLen, int* returnSize ) {
    int* a;  //定义一个新的数组
    int row=matrixRowLen;//数组的行数
    int col=*matrixColLen;//数组的列数
    int cnt=row * (col);  //数组的总的元素个数
    *returnSize=cnt;      // 定义返回数组的大小
    a=(int *)malloc(sizeof(int)* cnt); //为新的数组申请空间
    int up=0,down=row-1,right=col-1,left=0;//上边界,下边界,右边界,左边界
    int i=0,j=0,t=0;  //i表示行,j表示列,t表示数组a的元素个数

    while(1){  //循环一圈
        for(j=left;j<=right;j++){  //遍历上边界
            a[t++]=matrix[up][j];
        }
        if(t>=cnt){     //循环出口
            break;
        }
        up++;            //上边界下移
        for(i=up;i<=down;i++){    //遍历右边界
            a[t++]=matrix[i][right];
        }
        if (t>=cnt) {
            break;
        }
        right--;         //右边界左移
        for(j=right;j>=left;j--){  //遍历下边界
            a[t++]=matrix[down][j]; 
        }
        if(t>=cnt){
            break;
        }
        down--;   //下边界上移
        for(i=down;i>=up;i--){   //遍历左边界
            a[t++]=matrix[i][left];
        }
        if(t>=cnt){
            break;
        }
        left++;   //左边界右移
    }
    return a ;
}

到了这里,关于数据结构 每日一练 :选择 + 编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言:选择+编程(每日一练)

    目录  选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:尼科彻斯定理 示例1 题二:等差数列 示例2 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 1、以下程序段的 输出结果 是( ) #includestdio.h i

    2024年02月12日
    浏览(27)
  • C语言:选择+编程(每日一练Day14)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:珠玑妙算 思路一: 题二:两数之和 思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们的一键三连

    2024年02月09日
    浏览(44)
  • C语言:选择+编程(每日一练Day12)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:数组颠倒 思路一: 题二:单词倒排 思路一: 思路二: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们的

    2024年02月09日
    浏览(39)
  • C语言:选择+编程(每日一练Day11)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:最大连续1的个数 思路一: 题二:完全数计算  思路二: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们

    2024年02月09日
    浏览(38)
  • C语言:选择+编程(每日一练Day13)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:统计每个月兔子的总数 思路一: 题二:数列的和 思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬

    2024年02月08日
    浏览(37)
  • C语言:选择+编程(每日一练Day16)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:数对 思路一: 题二:截取字符串 思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们的一键三连!

    2024年02月09日
    浏览(34)
  • C语言:选择+编程(每日一练Day15)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:寻找奇数 思路一: 题二:寻找峰值 思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们的一键三连

    2024年02月10日
    浏览(37)
  • C语言:选择+编程(每日一练Day3)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:记负均正 思路一: 题二:旋转数组的最小数字 思路一: 1、已知函数的原型是: int fun(char b[10], int *a); ,设定义: char c[10];int d; , 正确的调用语句是 ( ) A: fun(c,d);     B: fun(c,d);    C: fun(c,d);    D: f

    2024年02月09日
    浏览(33)
  • C语言:选择+编程(每日一练Day1)

    目录  选择题: 题一: 题二: 题三:  题四:  题五: 编程题: 题一:打印1到最大的n位数 示例1 思路一: 题二:计算日期到天数转换 示例1  思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 1、执行下

    2024年02月09日
    浏览(31)
  • C语言:选择+编程(每日一练Day6)

    目录 ​编辑选择题:  题一: 题二: 题三: 题四: 题五: 编程题: 题一:至少是其他数字两倍的最大数 思路一: 思路二: 题二:两个数组的交集  思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包