1. class Solution {
  2. public:
  3. static bool cmp(vector<int>a,vector<int>b)
  4. {
  5. return a[]-a[]<b[]-b[];
  6. }
  7. int twoCitySchedCost(vector<vector<int>>& costs) {
  8. int len=costs.size();
  9. sort(costs.begin(),costs.end(),cmp);
  10. int sum=;
  11. for(int i=;i<len/;i++)
  12. {
  13. sum+=costs[i][];
  14. }
  15. for(int i=len/;i<len;i++)
  16. sum+=costs[i][];
  17. return sum;
  18.  
  19. }
  20. };

这个代码,如果cmp函数前不加static,则会报错。因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法再sort中调用非静态成员函数。静态成员函数或者全局函数是不依赖于具体对象的, 可以独立访问,无须创建任何对象实例就可以访问。同时静态成员函数不可以调用类的非静态。所以要加上static关键字

另一个问题,当我想在cmp函数增加一些局部参数时,此时sort函数和cmp函数本身不能再有任何参数,所以可以通过如下的方式进行:

  1. class Solution {
  2. public:
  3. vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) {
  4. vector<vector<int>>a;
  5. int r=,c=;
  6. for (int i = ; i < R; i++) {
  7. for (int j = ; j < C; j++) a.push_back({i, j});
  8. }
  9. sort(a.begin(),a.end(),[r0,c0](vector<int>&a, vector<int>&b){
  10. int l1=abs(a[]-r0)+abs(a[]-c0);
  11. int l2=abs(b[]-r0)+abs(b[]-c0);
  12. return l1<l2;
  13. });
  14. //或写成如下形式
  15. sort(v.begin(), v.end(), [&](vector<int> &a, vector<int> &b)
  16. {
  17. return abs(a[]-r0)+abs(a[]-c0) < abs(b[]-r0)+abs(b[]-c0);
  18. });
  19. return a;
  20. }
  21. };

Leetcode中sort排序遇到的一些问题的更多相关文章

  1. STL中sort排序算法第三个参数_Compare的实现本质

    关于C++ STL vector 中的sort排序算法有三种自定义实现,它们本质上都是返回bool类型,提供给sort函数作为第三个参数. 重载运算符 全局的比较函数 函数对象 我认为从实现方式看,重 ...

  2. 关于js中sort()排序方法

    第一次写这个,算是记录自己的学习前端的一点点的历程吧.今天在做一个图片的随机排序遇到了一个问题,部分截图如下 我用的是json格式存储数组,想通过排序实现img数组中的内容升序或是降序发现用sort自 ...

  3. javascript中sort()排序的一些理解

    sort()方法对一个数组进行排序,并可以接受一个比较函数,最后返回一个排序的数组. 1.sort()有自身默认的比较函数,该函数把排序的元素都看作字符串. var s = [5, 4, 3, 2, ...

  4. Java 8 中Sort排序原理:

    总的来说,java中Arrays.sort使用了两种排序方法,快速排序和优化的合并排序.Collections.sort方法底层就是调用的Arrays.sort方法. 快速排序主要是对那些基本类型数据 ...

  5. js数组中sort排序注意的地方

    var a=[1,2,3,4,5] function sum(a,b) { return a-b } //从小到大 function obj(a,b) { return b-a } //从大到小 a. ...

  6. python中sort排序

    排序并且改变自身结果: nums.sort()

  7. Java中List的sort排序重写

    最近遇到需要使用list中sort排序功能,list中存的是自己写的类,所以需要重写sort函数,一般实现如下: Collections.sort(voList, new Comparator< ...

  8. [LeetCode] 148. Sort List 链表排序

    Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4->2-> ...

  9. 模拟javascript中的sort排序

    一.javascript中sort对数据进行排序的原理 sort() 方法对数组的元素做原地的排序,并返回这个数组. sort 可能不是稳定的.默认按照字符串的Unicode码位点排序; 语法:arr ...

随机推荐

  1. [转]C# 4.7.2 安装

    遇到提示 “无法建立到信任根颁发机构的证书链” 下载地址:https://files.cnblogs.com/files/z5337/NetFramework%E8%AF%81%E4%B9%A6.ra ...

  2. python 中增加css样式的三种方式

    增加css样式的三种方式: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. New Journey Prepare

    1. 车载USB充电器. 2. 轮胎检测,备胎充气. 3. 给刹车片加润滑油. 3. 给娃办身份证. 4. 取公积金. 5. 入职准备材料.

  4. C&C++类型定义typedef

    1.声明 1.1结构声明: struct { int n; double x,y; }; 1.2带结构标志的声明 struct point{ double x,y; }; 1.3定义结构类型 1.3. ...

  5. 关于mysql文件导入提示“Variable @OLD_CHARACTER_SET_CLIENT can't be set to the value of @@CHARACTER_SET_CLIENT”问题分析

    今天用myssqldump导出数据,然后再导入另外mysql数据库时,提示Variable @OLD_CHARACTER_SET_CLIENT can't be set to the value of ...

  6. Day71Django基础

    Django框架基础一 python中的web框架    a:socket    b:路由跟视图函数匹配关系    c:模板渲染    django:  a: 用了别人的wsgiref   b:自己写 ...

  7. IDEA 常用插件

    Maven Helperp3pauto filling Java call argumentsCamelCaseVisualVM LauncherTranslation.ignoreGenerateA ...

  8. orcal - 约束

    数据库约束 1.非空约束 DROP TABLE member PURGE; CREATE TABLE member( mid number , name varchar2(20) not null, ...

  9. mvc后台上传

    public ActionResult AddEnclosure(HttpPostedFileBase Filedata) { if (Filedata == null || string.IsNul ...

  10. 深入理解Java虚拟机读书笔记6----早期(编译期)优化

    六 早期(编译期)优化   1 “编译期”的含义     · 可能是指一个前端编译器把*.java文件转变成*.class文件的过程,前端编译器如:Sun的Javac.Eclipse JDT中的增量式 ...