一、LeetCode
1.字符串
LeetCode 704
public class Main {
public static void main(String[] args) {
int[] nums = {-1,0,3,5,9,12};
int target = 2;
int r = search(nums, target);
System.out.println(r);
}
public static int search(int[] nums, int target) {
int pivot, left = 0, right = nums.length - 1;
while (left <= right) {
pivot = left + (right - left) / 2;
if (nums[pivot] == target) return pivot;
if (target < nums[pivot]) right = pivot - 1;
else left = pivot + 1;
}
return -1;
}
}
LeetCode 28
public class Main {
public int strStr(String haystack, String needle) {
int length = needle.length();
if (haystack.equals("") && needle.equals("")) {
return 0;
}
for (int i = 0; i < haystack.length(); i++) {
if (i + length <= haystack.length()) {
String str = haystack.substring(i, i + length);
if (str.equals(needle)) {
return i;
}
}
}
return -1;
}
public static void main(String[] args) {
Main2 main2 = new Main2();
int result = main2.strStr("aaaaa", "aab");
System.out.println(result);
}
}
2.线性表
2.链表
3.哈希表
2.树
2.图
2.排序算法
2.迭代与递归
2.分治思想
2.搜素算法
2.贪心算法
LeetCode 455 分发饼干
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Main2 {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
List<Integer> sList = new ArrayList<>();
for (int i : s) {
sList.add(i);
}
int num = 0;
for (int i = 0; i < g.length; i++) {
for (int j = 0; j < sList.size(); j++) {
if (sList.get(j) >= g[i]) {
num++;
sList.remove(j);
break;
}
}
}
return num;
}
public static void main(String[] args) {
Main2 main2 = new Main2();
int[] g = {1, 2, 3};
int[] s = {1, 1};
main2.findContentChildren(g, s);
}
}
LeetCode 53 最大子序和
class Main2 {
public int maxSubArray(int[] nums) {
if (nums.length == 1) {
return nums[0];
}
int count = 0;
int sum = Integer.MIN_VALUE;
for (int i = 0; i < nums.length; i++) {
if (count < 0) {
count = 0;
}
count += nums[i];
sum = Math.max(count,sum);
}
return sum;
}
public static void main(String[] args) {
Main2 main2 = new Main2();
int[] nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
System.out.println(main2.maxSubArray(nums));
}
}
2.动态规划
一、OJ
1.字符串
OJ 7 Words
package main;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String arr[] = scan.nextLine().split(" ");
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i].length();
}
double result = (double)sum / (double)arr.length;
System.out.println(String.format("%.2f", result));
}
}
2.线性表
2.链表
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
String str2 = scanner.nextLine();
String[] arr1 = str1.split(" ");
String[] arr2 = str2.split(" ");
int[] a1 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
a1[i] = Integer.parseInt(arr1[i]);
}
int length = a1[1];
List<String> list = new LinkedList<>(Arrays.asList(arr2));
for (int i = 0 ;i < length; i++) {
String str = scanner.nextLine();
String[] arr = str.split(" ");
if (arr[0].equals("1")) {
list.add(Integer.parseInt(arr[1]), arr[2]);
}
if (arr[0].equals("2")) {
if (!list.isEmpty()) {
list.remove(Integer.parseInt(arr[1]) - 1);
}
}
}
for (String str : list) {
System.out.print(str + " ");
}
System.out.println();
}
}
3.哈希表
2.树
2.图
2.排序算法
2.迭代与递归
2.分治思想
2.搜素算法
2.贪心算法
2.动态规划