今日任务哈希表理论基础242.有效的字母异位词349.两个数组的交集202.快乐数1.两数之和状态:1刷文章目录哈希表基础定义常见的三种哈希结构一、242.有效的字母异位词二、349.两个数组的交集三,202.快乐数四,1.两数之和总结哈希表基础定义一般哈希表都是用来快速判断一个元素是否出现集合里,要枚举的话时间复杂度是O(n),但如果使用哈希表的话,只需要O(1)就可以做到。hashfunction,也就是哈希函数hashFunction=hashCode(name)%tableSize数据规模是dataSize,哈希表的大小为tableSize。拉链法:发生冲突的元素都被存储在链表中。线性
编写程序,创建一个4x4的矩阵,矩阵的值为{{1,2,4,5},{6,7,8,9},{10,11,12,13},{14,15,16,17}},显示该矩阵。求该矩阵的外围元素之和、主对角线元素之和以及副对角线元素之和。 求三类元素的和,可以定义3个不同的和变量,在遍历数组元素的循环中通过三次条件判分别进行三类元素的求和。 设行下标为i,列下标为j,考察三类元素的下标特征,外围元素要行下标i==0或者i==n-1(这里n为4)要么列下标j==0或者j==n-1;主对角线上的元行下标和列下标相等(i==j);副对角线上的元素行下标和列下标之和等于n-1(i
1.题目要求一个5*5的矩阵,求出矩阵两条对角线上的各元素之和1.这道题的重点在于要清楚知道主对角线和副对角线上的各元素的下标特征,把这个个问题弄清楚就不难了2.不理解的可以看一下例图: 2.解题思路由上图可知: i是行,j是列,第一条红色主对角线上的元素下标很容易就能看出其规律,那就可以将a[i][j]放在循环里,重复进行五次++就可以得到他的元素.第二条蓝色对角线上的元素,可以定义一个变量n,赋上列的值也就是4,行号仍用i来定义.注意:两条对角线上有一个重复的值,可以将它减去一次.代码如下(示例): #includeintmain(){ intsum=0;//存放累加的值 inta
求一个3*3的整型矩阵对角线元素之和首先定义一个三行三列的数组,然后用两层循环,一个代表行一个代表列进行二维数组的输入,通过a[i][i]进行求和输出。代码如下:#includeintmain(){inta[3][3]={0},sum=0;for(inti=0;i3;i++){for(intj=0;j3;j++){scanf("%d",&a[i][j]);}}for(inti=0;i3;i++){sum=sum+a[i][i];}printf("sum=%d\n",sum);return0;}运行结果如下:
定义a=10,b=20,以下为三种比较方式:一、if-else法#includeintmain(){ inta=10; intb=20; intret=0;if(a>b)ret=a;elseret=b; printf("max=%d\n",ret); return0;}通过在函数中运用if-else语句来求出大的数,运行结果如下: 二、三目运算符法#includeintmain(){ inta=10; intb=20; intret=a>b?a:b; printf("max=%d\n",ret); return0;}通过三目运算符(?:)来求出大的数,运行结果如下: 三、调用函数法#inclu
哈希表(散列表)理论基础:哈希表是根据关键码的值而直接进行访问的数据结构。直白来讲其实数组就是一张哈希表。 什么时候想到用哈希法,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!哈希函数:将所求数据映射到哈希表上叫做哈希函数。哈希函数如下图所示,通过hashCode把名字转化为数值,一般hashcode是通过特定编
leetcode原题链接:两数之和题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例:输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,返回[0,1]。示例2:输入:nums=[3,2,4],target=6输出:[1,2]示例3:输入:nums=[3,3],target=6输出:[0,1]解题思
❓18.四数之和难度:中等给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组[nums[a],nums[b],nums[c],nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0a、b、c和d互不相同nums[a]+nums[b]+nums[c]+nums[d]==target你可以按任意顺序返回答案。示例1:输入:nums=[1,0,-1,0,-2,2],target=0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例2:输入:nums=[2,2,2,2,2],target=8输出:
每日一题三数之和题目链接思路解析函数原型首先我们来看一下题目给的函数原型:int**threeSum(int*nums,intnumsSize,int*returnSize,int**returnColumnSizes)题目要求我们返回一个二维数组,数组的行数代表着存在多少个满足条件的三元组,而在本题中,列数规定为3,即每行存储3个元素在螺旋矩阵中我们已经做过分析,nums就是题目给的整数数组,numsSize就是这个数组的大小,returnSize就是我们返回的二维数组的行数,returnColumnSizes是一个一维数组,它储存的就是我们返回的二维数组的每一行的列数。整体框架这一题其实就
❓15.三数之和难度:中等给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums=[-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]解释:nums[0]+nums[1]+nums[2]=(-1)+0+1=0。nums[1]+nums[2]+nums[4]=0+1+(-1)=0。nums[0]+nums[3]+nums[4]=(-1)+2+