数据结构基础训练

112 阅读1分钟

学习重点:集合、列表、数组、二维数组以及字符串。 集合列表数组的定义、三者之间的关联差别以及对于数组的操作和什么是字符串以及对字符串的操作。 学习心得:了解以及巩固了这三者的概念,这三者的内涵以及各自的特征和区别。比如集合里的元素没有顺序,类型也不一定相同。而列表就有顺序并且长度可变。数组的概念最多,并且能实现多种操作。数组会用一些名为索引的数字来标识每项数据在数组中的位置。对于数组有读取、查找、插入和删除的多种操作。而对于字符串,操作的基本对象是字符串整串和子串,对于字符串有连接,比较的操作。在这个过程中复习了以往的知识并且学习了很多,下方的评论也让我受益匪浅。我认识到了自己编程能力和储备知识的不足,以后要多多学习知识,并且提高自己的动手能力。 这次练习主要是从下方评论处获得答案,我认识到了自己的不足,以后多多练习。 (1)class Solution { public: int pivotIndex(vector& nums) { if(nums.empty()) return -1; int left_sum=0,right_sum=accumulate(nums.begin(), nums.end(), 0); for(int i=0;i<nums.size();++i) { left_sum+=nums[i]; if(i>0) right_sum-=nums[i-1]; if(left_sum==right_sum) return i; } return -1; } };

5(H_EYG`EU0G5UPM0JX4S.png (2)class Solution { public: int searchInsert(vector& nums, int target) { int left=0,right=nums.size()-1; while(left<=right) { int mid=(left+right)/2; if(nums[mid]==target) return mid; else if(nums[mid]<target) left=mid+1; else right=mid-1; } return left; } };

S)MY9~_@14@F7$L)7Z{I774.png (3) class Solution { public: vector<vector> merge(vector<vector>& intervals) { int n = intervals.size(); if(n==1) return intervals; sort(intervals.begin(), intervals.end()); vector<vector> vec; vec.push_back(intervals[0]); int j =0; for(int i = j+1;i<n;i++){ if(intervals[i][0]<=vec[j][1]) vec[j][1]=max(vec[j][1],intervals[i][1]); else{ vec.push_back(intervals[i]); j++; } } return vec; } };

![(3W3IZRHD61Z]WDURPVMUSL.png](p3-juejin.byteimg.com/tos-cn-i-k3…)