做3d建模贴图找哪个网站企业网站如何找词

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

做3d建模贴图找哪个网站,企业网站如何找词,上市软件公司100强,安全电子商务网站设计目录 1、二分查找 2、在排序数组中查找元素的第一个和最后一个位置 3、搜索插入位置 4、x的平方根 5、山脉数组的封顶索引 6、寻找峰值
7、寻找旋转排序数组中的最小值 8、点名 9、完结散花 1、二分查找 给定一个 n 个元素有序的#xff08;升序#xff09;整型数组…目录 1、二分查找 2、在排序数组中查找元素的第一个和最后一个位置 3、搜索插入位置 4、x的平方根 5、山脉数组的封顶索引 6、寻找峰值  7、寻找旋转排序数组中的最小值 8、点名 9、完结散花 1、二分查找 给定一个 n 个元素有序的升序整型数组 nums 和一个目标值 target  写一个函数搜索 nums 中的 target如果目标值存在返回下标否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4示例 2: 输入: nums [-1,0,3,5,9,12], target 2 输出: -1 解释: 2 不存在 nums 中因此返回 -1 题解这个题目我们只要用到朴素版的二分查找算法即可 解题代码 class Solution { public:int search(vectorint nums, int target) {int left0,rightnums.size()-1;while(leftright){int midleft(right-left)/2;//防溢出if(nums[mid]target) return mid;else if(nums[mid]target) leftmid1;else rightmid-1;}return -1;} }; 2、在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1 输入nums [5,7,7,8,8,10], target 8 输出[3,4] 示例 2 输入nums [5,7,7,8,8,10], target 6 输出[-1,-1] 示例 3 输入nums [], target 0 输出[-1,-1] 解题代码 class Solution { public:vectorint searchRange(vectorint nums, int target) {if(nums.empty()) return {-1,-1};//处理边界情况vectorint ret;int left0,rightnums.size()-1;//求左端点while(leftright)//判断条件一定是,如果则会进入死循环{int midleft(right-left)/2;//不能加1否则死循环if(nums[mid]target) leftmid1;else rightmid;}ret.push_back(nums[right]target?right:-1);//求右端点left0,rightnums.size()-1;while(leftright){int midleft(right-left1)/2;//一定要加1否则死循环if(nums[mid]target) rightmid-1;else leftmid;}ret.push_back(nums[left]target?left:-1);return ret;} }; 3、搜索插入位置 给定一个排序数组和一个目标值在数组中找到目标值并返回其索引。如果目标值不存在于数组中返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入: nums [1,3,5,6], target 2 输出: 1示例 3: 输入: nums [1,3,5,6], target 7 输出: 4 解题代码  class Solution { public:int searchInsert(vectorint nums, int target) {int left0,rightnums.size()-1;//求左端点while(leftright){int mid left(right-left)/2;if(nums[mid]target) right mid;else leftmid1;}return nums[left]target?left1:left;} }; 4、x的平方根 给你一个非负整数 x 计算并返回 x 的 算术平方根 。 由于返回类型是整数结果只保留 整数部分 小数部分将被 舍去 。 注意不允许使用任何内置指数函数和算符例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1 输入x 4 输出2示例 2 输入x 8 输出2 解释8 的算术平方根是 2.82842…, 由于返回类型是整数小数部分将被舍去。 解题代码 class Solution { public:int mySqrt(int x) {//求右端点long long left0,rightx;while(leftright){long long midleft(right-left1)/2;if(mid*midx) leftmid;else rightmid-1;}return left;} }; 5、山脉数组的封顶索引 给定一个长度为 n 的整数 山脉 数组 arr 其中的值递增到一个 峰值元素 然后递减。 返回峰值元素的下标。 你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。 示例 1 输入arr [0,1,0] 输出1示例 2 输入arr [0,2,1,0] 输出1示例 3 输入arr [0,10,5,2] 输出1 class Solution { public:int peakIndexInMountainArray(vectorint arr) {int left0,rightarr.size()-1;//求最右端点while(leftright){int midleft(right-left1)/2;if(arr[mid]arr[mid-1]) rightmid-1;else leftmid;}return left;} }; 6、寻找峰值  峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums找到峰值元素并返回其索引。数组可能包含多个峰值在这种情况下返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复杂度为 O(log n) 的算法来解决此问题。 示例 1 输入nums [1,2,3,1] 输出2 解释3 是峰值元素你的函数应该返回其索引 2。 示例 2 输入nums [1,2,1,3,5,6,4] 输出1 或 5 解释你的函数可以返回索引 1其峰值元素为 2或者返回索引 5 其峰值元素为 6。 class Solution { public:int findPeakElement(vectorint nums) {int left0,rightnums.size()-1;//求最右端点while(leftright){int midleft(right-left1)/2;if(nums[mid]nums[mid-1]) rightmid-1;else leftmid;}return left;} }; 7、寻找旋转排序数组中的最小值 已知一个长度为 n 的数组预先按照升序排列经由 1 到 n 次 旋转 后得到输入数组。例如原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到 若旋转 4 次则可以得到 [4,5,6,7,0,1,2]若旋转 7 次则可以得到 [0,1,2,4,5,6,7] 注意数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。 给你一个元素值 互不相同 的数组 nums 它原来是一个升序排列的数组并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。 你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。 示例 1 输入nums [3,4,5,1,2] 输出1 解释原数组为 [1,2,3,4,5] 旋转 3 次得到输入数组。示例 2 输入nums [4,5,6,7,0,1,2] 输出0 解释原数组为 [0,1,2,4,5,6,7] 旋转 3 次得到输入数组。示例 3 输入nums [11,13,15,17] 输出11 解释原数组为 [11,13,15,17] 旋转 4 次得到输入数组。 class Solution { public:int findMin(vectorint nums) {int nnums.size()-1;//处理特殊情况即未发生旋转或旋转到原数组if(nums[0]nums[n]) return nums[0];int left0,rightn;//求最左端点while(leftright){int midleft(right-left)/2;if(nums[mid]nums[0]) rightmid;else leftmid1;}return nums[left];} }; 8、点名 某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席请返回他的学号。 示例 1: 输入: records [0,1,2,3,5] 输出: 4示例 2: 输入: records [0, 1, 2, 3, 4, 5, 6, 8] 输出: 7 class Solution { public:int takeAttendance(vectorint r) {int endr.size()-1;//特殊情况处理if(r[end]end) return end1;int left0,rightend;//求最左端点的二分查找while(leftright){int midleft(right-left)/2;if(r[mid]mid) rightmid;else leftmid1;}return right;} }; 其他解法  hash映射 class Solution { public:int takeAttendance(vectorint r) {int nr.size()1;int hash[10000]{0};for(auto e:r) hash[e];for(int i0;in;i) {if(hash[i]0)return i;}return n;} }; 位运算 class Solution { public:int takeAttendance(vectorint r) {int ret0;for(int i0;ir.size();i){ret^r[i];ret^i;}return ret^r.size();} }; 暴力查找 class Solution { public:int takeAttendance(vectorint r) {int ret0;for(int i0;ir.size();i){if(r[i]!i) return i;}return r.size();} }; 数学高斯求和公式 class Solution { public:int takeAttendance(vectorint r) {int ret0,sum10,sum20;for(int i0;ir.size();i){sum1r[i];sum2i;}return sum2-sum1r.size();} }; 9、完结散花 好了这期的分享到这里就结束了~ 如果这篇博客对你有帮助的话可以用你们的小手指点一个免费的赞并收藏起来哟~ 如果期待博主下期内容的话可以点点关注避免找不到我了呢~ 我们下期不见不散~~ ​​​​