一:题目类型
10个选择10个填空2道编程题
二:编程题
1:34 在排序数组中查找元素的第一个和最后一个位置
class Solution {
public:/**思路:1.分为两种情况 那就是该元素是存在于排序数组当中,该元素不存在该排序数组当中。2.如果元素是存在于排序数组当中的,那么我们求取其左右边界3.如果元素不存在于排序数组当中,那么也有两种情况1>:该元素的大小是在 排序数组当中的 例如 [2,5] 32>:该元素的大小是在 排序数组之外的 例如 [2,5] 6 :在这个当中 我们是可以求取到其右边界的位置的,但是左边界求取不到 [2,5] 1 :我们是可以求取到左边界位置的 但是求取不到右边界*/vector<int> searchRange(vector<int>& nums, int target) {int leftAns = leftBoder(nums,target);int rightAns = rightBoder(nums,target);//倒数第一种情况if(leftAns == -2 || rightAns == -2) return {-1,-1};//倒数第三种情况if(rightAns - leftAns > 1) return {leftAns + 1,rightAns-1};//倒数第二种情况return {-1,-1};}//求取右边界 由左边界不断逼近int rightBoder(vector<int> nums,int target) {int left = 0;int right = nums.size()-1;int rightAns = -2;while(left <= right) {int mid = (left + right)/2;if(nums[mid] > target) {right = mid -1;} else {left = mid + 1;rightAns = left;//因为上方的mid + 1,所以当left = right 时 left + 1, } //赋值给 rightAns ,那么右边界就比实际值大一}return rightAns;}//求取左边界 由右边界不断逼近int leftBoder(vector<int>& nums,int target) {int left = 0;int right = nums.size()-1;int leftAns = -2;while (left <= right) {int mid = (left+right)/2;if (nums[mid] < target) {left = mid+1;} else {right = mid - 1;leftAns = right;}}return leftAns;}};
2:101 对称二叉树
class Solution {
public:bool isSymmetric(TreeNode* root) {/**思路:我们其实也就是利用栈先进先出的特性 我们将我们需要比较的两个结点放进栈中然后先进行判断,然后再将该两个结点的左右结点放进栈中,但是我们放入的顺序是需要注意的 因为是要比较对称 所以左节点的左孩子,右节点的右孩子左节点的有孩子,右节点的左孩子*/if(root == nullptr) return false;stack<TreeNode*>st;st.push(root->left);st.push(root->right);while(!st.empty()) {TreeNode* leftNode = st.top(); st.pop();TreeNode* rightNode = st.top(); st.pop();if(leftNode == NULL && rightNode == NULL) continue;//左节点空,右节点不空//右节点空,左节点不空//左右结点都不空 但其值不相等if(leftNode == NULL || rightNode == NULL || (leftNode->val != rightNode->val)) return false;st.push(leftNode->left);st.push(rightNode->right);st.push(leftNode->right);st.push(rightNode->left);}return true;}
};
群里的大佬都好吊啊
收到笔试题邀请的我激动极了
因为简历没挂
但大佬们 一句 这小厂也配有笔试题
可见今年春招实习又是
鸡毛卷上天了
连小厂都得通过一轮笔试筛选面试的人了
知道自己菜 不能跟人比
自己是一场笔试也不敢错过
找工作也就是闹着玩 富士康才是人生真谛