leetcode:1337. 方阵中战斗力最弱的 K 行(中等)

题目:

在这里插入图片描述

分析:

感觉是考排序的题,给以一组数,相同的数的相对顺序不发生变化,想一想是哪种排序呢?
在这里插入图片描述

代码:

int A[m.size()];//存放士兵的个数
 vector<int> B;//0-0 
 for(int i=0;i<m.size();i++)
 {
  //二分查找
  int b=0;
  int e=m[0].size()-1;
  while(b<e)
  {
   int c=b+(e-b)/2;
   if(m[i][c]) b=c+1;
   else e=c;
  }
  if(m[i][m[0].size()-1]) b++;
  A[i]=b;
 }
 for(int i=0;i<m.size();i++) B.push_back(0);
 //选择排序吧。
 for(int i=0;i<m.size()-1;i++)
 {
  for(int j=0;j<m.size()-i-1;j++)
  {
   if(A[j]>A[j+1]) 
   {
    int c=A[j];A[j]=A[j+1];A[j+1]=c;
    int c2=B[j];B[j]=B[j+1];B[j+1]=c2;
   }
  }
 }
 vector<int> D;
 for(int i=0;i<k;i++) D.push_back(B[i]);
 return D;

结果:

在这里插入图片描述
不错,首次内存最少!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值