首页 > 其他分享 >C语言矩阵顺时针旋转90度和力扣34. 在排序数组中查找元素的第一个和最后一个位置

C语言矩阵顺时针旋转90度和力扣34. 在排序数组中查找元素的第一个和最后一个位置

时间:2023-04-11 23:34:44浏览次数:40  
标签:度和力 matrix nums int res mid 34 90 target

#include <iostream>
using namespace std;
#define M 5
#include<stdlib.h>
//原矩阵,某元素第n行第m列,;顺时针旋转90度后,位置变成倒数第n列,第m行
//即先转置再水平翻转
int n = 0;
void rotation_90(int matrix[][M],int n)
{
for (int i = 0; i < n; i++)
{
for (int j = i; j < M; j++)
{
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
//转置
//水平翻转
for (int i = 0; i < n; i++)
{
for (int j = 0; j < M / 2; j++)
{
int tmp = matrix[i][j];
matrix[i][j] = matrix[i][M - j - 1];
matrix[i][M - j - 1] = tmp;
}
}
}

int test01()
{
int matrix[][M] = { {1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25} };
int n = sizeof(matrix) / (M * 4);
//行数
for (int i = 0; i < M; i++)
{
for (int j = 0; j < M; j++)
{
cout << matrix[i][j] << " ";
}
cout << endl;
}

rotation_90(matrix,n);
cout << endl;
// 输出矩阵
for (int i = 0; i < M; i++)
{
for (int j = 0; j < M; j++)
{
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}

//力扣题
//34. 在排序数组中查找元素的第一个和最后一个位置
//给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
//
//如果数组中不存在目标值 target,返回[-1, -1]。
//
//你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
int* searchRange(int* nums, int numsSize, int target, int* returnSize) {
int* res = (int*)malloc(sizeof(int) * 2);
int r = numsSize - 1;//右边界 right
int l = 0; //左边界left
int found = 1; //用来判断是否找到
res[0] = -1;
res[1] = -1;
*returnSize = 2;
while (l <= r && found)
{
//找不到的情况
if (target < nums[l] || target > nums[r]) {
return res;
}

int mid = l + (r - l) / 2;
if (nums[mid] > target)
r = mid - 1;
else if (nums[mid] < target)
{
l = mid + 1;
}
else {
//左边界
found = 0;//找到后不再进行循环
res[0] = mid;
res[1] = mid;
int n = mid;
while (n > l)
{
--n;
if (nums[n] == target)
{
res[0] = n;
}
else
{
break;
}
}
//右边界
while (mid < r)
{
++mid;
if (nums[mid] == target)
{
res[1] = mid;
}
else
{
break;
}
}
}
}
return res;
}

void test02()
{
int arr[6] = { 5,7,7,8,8,10 };
int* nums = arr;
int* a = new int;
int* b = searchRange(nums, 6, 6, a);
cout << b[0] << b[1] << endl;
cout << *a;
}

int main()
{
test01();
test02();
return 0;
}

标签:度和力,matrix,nums,int,res,mid,34,90,target
From: https://www.cnblogs.com/wlxdaydayup/p/17308272.html

相关文章

  • php的TP框架保存数据报错: SQLSTATE[HY000]: General error: 1366 Incorrect string v
    这一般情况就是保存表情字符导致的字符长度问题原因可能: (需要改字符集为 utf8mb4 排序规则为utf8mb4_general_ci)1.数据表字段不是utf8mb42.项目目录下文件.env里配置mysql  CHARSET=utf8需要该为 CHARSET=utf8mb43.如果不存在.env文件,则可能是config目......
  • [LeetCode] 2390. Removing Stars From a String
    Youaregivenastring s,whichcontainsstars *.Inoneoperation,youcan:Chooseastarin s.Removetheclosest non-star charactertoits left,aswellasremovethestaritself.Return thestringafter all starshavebeenremoved.Note:Thei......
  • 用Java写一段中国身份证的正则表达式,要求验证身份证中的日期,且大于1900年,以及校验码验
    以下是一个Java正则表达式,可用于验证中国身份证中的日期,并要求日期在1900年及之后:Stringregex="(?:(?:19[0-9]\\d)|(?:[2-9]\\d{3}))(?:0[1-9]|1[012])(?:0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]";这个正则表达式的含义如下:(?:(?:19[0-9]\\d)|(?:[2-9]\\d{3})):匹配1900年......
  • 3500/34 125696-01 捕获每个公交车站的GPS位置
    3500/34125696-01捕获每个公交车站的GPS位置因此,要设计特定的路线,必须为每个路线方向创建两条路线及其相应的公交车站。路线被设计成有向图,其中节点被用来表示汽车站,边被用来表示一个汽车站和另一个汽车站之间的距离。该模块使用Googlemaps的API,并对其进行扩展,以定义城市中特......
  • poj 3090 Visible Lattice Points
     #include<iostream>#include<algorithm>usingnamespacestd;constintM=1e6;intvis[M+4],P[M+4],cnt;intfi[M+4];voidshai(inttop){ cnt=0; fi[1]=1; for(inti=2;i<=top;i++){ if(vis[i]==0){ P[++cnt]=i; fi[i]=i-1;......
  • 【贪心算法】NO134 加油站
    134.加油站在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以绕环路行驶一周,则返......
  • GhostDoc Enterprise.v2022.2.22190.VS2017-VS2022.Extension安装包分享
    这个网站似乎是屏蔽了中国大陆和中国香港的IP,不知道怎么想的。似乎是有点看不起我们?原版安装包v2022.2.22190,支持vs2017到vs2022,可以通过百度网盘下载。链接:https://pan.baidu.com/s/13hrjHHn_51RDUMiIcylu-A?pwd=dxym提取码:dxym -------------------------------------......
  • 6361.对角线上的质数-340
    对角线上的质数给你一个下标从0开始的二维整数数组nums。返回位于nums至少一条对角线上的最大质数。如果任一对角线上均不存在质数,返回0。注意:如果某个整数大于1,且不存在除1和自身之外的正整数因子,则认为该整数是一个质数。如果存在整数i,使得 nums[i][i]......
  • 6360.等值距离和-340
    等值距离和给你一个下标从0开始的整数数组nums。现有一个长度等于nums.length的数组arr。对于满足nums[j]==nums[i]且j!=i的所有j,arr[i]等于所有|i-j|之和。如果不存在这样的j,则令arr[i]等于0。返回数组arr。示例1:输入:nums=[1,3,1,1,2]输......
  • CH340串口问题
    ch340的串口还是要慎用啊,有些盗版的波特率上去了会出现乱码的问题,下面是我用的两个ch340的串口当波特率设置到了1500000的时候,左边的这个ch340就会一直乱码,右边的是正常的,需要注意,一开始还不信,后面用逻辑分析仪抓了一下数据,才确认是ch340的问题......