[关闭]
@CrazyHenry 2018-01-01T09:47:12.000000Z 字数 893 阅读 1204

Elsecode1. 定序正数和负数

ddddLeetcode刷题


71856-106.jpg-275.6kB

题目

image.png-201.9kB

难点:是否考虑0,考虑0该怎么处理。

我的代码:使用lambda表达式

分析:

IMG_20171209_115034.jpg-2976.5kB

  1. //Author: Li-Yingmin@https://liyingmin.wixsite.com/henry
  2. //Email: li_yingmin@outlook.com
  3. //Elsecode-1
  4. //T(n)=O(nlogn)~O(n^2), S(n)=O(1)
  5. #include <iostream>
  6. #include <string>
  7. #include <vector>
  8. #include <iterator>
  9. #include <algorithm>
  10. using std::vector;
  11. using std::string;
  12. using std::cout;
  13. using std::cin;
  14. using std::endl;
  15. using std::ostream;
  16. void sort(vector<int> &nums)
  17. {
  18. sort(nums.begin(), nums.end(), [](const int &a, const int &b)
  19. {return a>=0?(a>0?false:(b>0?true:false)):(a*b>0?false:true);});
  20. }
  21. int main()
  22. {
  23. vector<int> nums = {2,-1,5,6,0,0,1,0,-5,-9};
  24. sort(nums);
  25. for(auto ivec:nums)
  26. cout<<ivec<<" ";
  27. cout<<endl;
  28. return 0;
  29. }

image.png-102.9kB

无非是重新定义了"<"的意义,排序算法的时间复杂度是O(nlogn)到O(n^2)之间。
?:满足右结合律,但是为了看起来方便,最好都加上(),逻辑由外层看到内层即可,表达式返回bool类型值。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注