二分查找的边界问题

JAVA 

使用二分查找时,特别是涉及左右边界时,不同的写法会产生不同的效果, right 是闭区间还是开区间 以及 left<right 还是 left<=right 会影响最终的返回结果。public class BinarySearch { /** * 查找左边界: *

滑动窗口的一些技巧


滑动窗口在思路上是一个比较简单的方法,但是在某些情况下,其边界条件会变得非常棘手,这也是难点所在。滑动窗口通常采用双指针实现,重点在于处理while的停止条件,以及窗口内容的更新条件。如果两个指针都对窗口内容有影响,这时不要把注意力同时放在两个指针上,否则两个指针互相影响会使得问题复杂化。一般来说,

Spring Boot 学习(一)

JAVA  Spring 

yml推荐使用yml文件代替默认的properties作为原来配置文件@ConfigurationProperties(prefix = "girl")用来注入配置文件中的值,prefix为配置文件中一个属性集合的前缀例如:在application.yml中配置这样的属性girl

TSP旅行商问题

C/C++ 

// TSP.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include "iostream"#define NUM 100using namespace std;int n;int m;int x[NUM];int be

数字的全排列

C/C++ 

#include "stdafx.h"#include "iostream"using namespace std;void Perm(int list[], int k, int m) {if (k == m) {for (int i = 0; i <

字符数组的所有子集

C/C++ 

#include "stdafx.h"#include "iostream"#include <cmath>using namespace std;//输出子集void getSubset(char list[]) {int length = st

寻找数组中第k小(大)的元素

C/C++ 

#include "iostream"#define NUM 100using namespace std;int a[13]={1,4,5,6,3,16,8,9,11,13,26,15,36,};int select(int left,int right,int k){if(l

最长字段和-动态规划

C/C++ 

#include "stdafx.h"#include "iostream"#define num 100using namespace std;int a[num];int MaxSum(int n){int sum=0;int b=0;for(int i=

最大字段和-分治法

C/C++ 

#include "stdafx.h"#include "iostream"using namespace std;int a[1001];int b[8]={1,-3,7,8,-4,12,-10,6};int GetMax(int a,int b,int c

单调递增序列最大长度

C/C++ 

#include "stdafx.h"#include "iostream"#define num 100using namespace std;int a[num]; //原始数据//int c[num][num]; //最优解int LIS(int n){