算法
tian1191132442
喜欢折腾的coder
展开
-
排序算法
快速排序class Solution { public int[] sortArray(int[] nums) { if(nums.length==0||nums==null)return null; int left=0; int right=nums.length-1; quick(nums,left,right); return nums; .原创 2021-04-02 21:37:44 · 64 阅读 · 0 评论 -
树的增删改查
package Tree;import java.util.Stack;//定义树节点class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int x){ val=x; }}//我想要跟链表一样实现一个树的增删改查//1.建立一个二叉树TreeBuild();//2.增 add(TreeNode root);//3.删delete(TreeNode root原创 2020-11-07 09:23:01 · 896 阅读 · 0 评论 -
寻找二叉树某个节点的父节点(递归和非递归两种方法)java代码
参考转载 2020-11-07 09:22:16 · 1960 阅读 · 0 评论 -
反转链表
class Solution { public ListNode reverseList(ListNode head) { ListNode cur=null; ListNode pre=head; while(pre!=null){ ListNode last=pre.next; pre.next=cur; cur=pre; pre=last;原创 2020-11-03 21:35:02 · 43 阅读 · 0 评论 -
合并两个链表
public void meger(ListNode l1,ListNode l2){ ListNode l1_tmp; ListNode l2_tmp; while (l1 != null && l2 != null) { l1_tmp = l1.next; l2_tmp = l2.next; l1.next = l2; l1 = l1_tm.原创 2020-11-03 21:34:31 · 69 阅读 · 0 评论 -
leetcode-80. 删除排序数组中的重复项 II
题目:给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。int i=0;for(int n:nums){ if(i<2||n>nums[i-2]){ nums[i++]=n; }}拓展:此方法可是实现每个元素最多出现K次,则代码是:int i=0;for(int n:nums){ if(i<k||原创 2020-11-03 10:49:03 · 54 阅读 · 0 评论 -
找到链表的中点
找中点其实很好操作的:一个快指针,一个慢指针,每次fast指针比慢指针多走一步,那么当快指针到链表终止时,slow指针刚刚好就是链表的中点就是因为这哥代码害我搞了一天,如果按这样子的话,fast指针始终只是比慢指针slow多走一步,不可能实现找中点的!fast=slow.next应该是:fast=fast.next.next错误示范:class Solution { public TreeNode sortedListToBST(ListNode head) {原创 2020-11-02 19:16:32 · 454 阅读 · 0 评论 -
leetcode--2两数相加
原题链接这题思路很简单,分为三个步骤:获取l1和l2的长度,并对短的链表进行补零两个对应节点的值相加注意:在进行两个对应节点的值相加时,链表末尾相加后,可能会大于10,这个时候需要在添加一个数代码:class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode p1 = l1; ListNode p2=l2; //1.获取l1和l2原创 2020-10-23 08:09:43 · 81 阅读 · 0 评论 -
leetcode234
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ /* 为什么反转链表不行,因为反转的时候,原链表也也跟着改变了,永远返回true */class Solution { public boolean isPalindrome(ListN原创 2020-10-22 19:02:51 · 55 阅读 · 0 评论 -
leetcode15三数之和
参考文章代码:自己代码参考代码:class Solution { public List<List<Integer>> threeSum(int[] nums) {// 总时间复杂度:O(n^2) List<List<Integer>> ans = new ArrayList<>(); if (nums == null || nums.length <= 2) return ans;原创 2020-10-12 21:10:12 · 148 阅读 · 0 评论 -
自己实现String.replace方法
public class replacestring { //测试 public static void main(String[] args) { String s=" abgabelabab y"; String replace = replace(s, " ", "t"); System.out.println(replace); } //实现功能:把str这个字符串,把要换的target,换成你想要的repl原创 2020-09-29 09:21:45 · 421 阅读 · 0 评论 -
摩根投票法
先给出结论:摩根投票法:candicate就是数组中出现最多地数----->candidateint count=0,candidate=0; for(int n:nums){ if(count==0)candidate=n; count+=(n==candidate)?1:-1; }具体得摩根投票法是怎么来的?请看:Boyer-Moore 投票算法思路如果我们把众数记为 +1+1,把其他数记为 -1−1,将原创 2020-09-25 21:15:03 · 397 阅读 · 0 评论 -
剑指 Offer 34. 二叉树中和为某一值的路径(回溯法)
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,4,11,2], [5,原创 2020-09-18 16:59:02 · 100 阅读 · 0 评论 -
BFS
leetcode 102. 二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]class Solution { public List<List<Integer>> levelOrder(TreeNode root) { if(原创 2020-09-14 20:21:48 · 63 阅读 · 0 评论 -
哨兵案例
哨兵案例一:链表的删除原创 2020-09-14 10:55:43 · 121 阅读 · 0 评论 -
剑指 Offer 25. 合并两个排序的链表
剑指 Offer 25. 合并两个排序的链表原创 2020-09-11 20:05:36 · 43 阅读 · 0 评论 -
二叉树遍历
参考一参考二原创 2020-09-06 11:16:03 · 23168 阅读 · 1 评论 -
题目描述 给出一个仅包含字符‘(‘,‘)‘,‘{‘,‘}‘,‘[‘和‘]‘,的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,“()“和“()[]{}“都是合法的括号序列,但“
import java.util.*;public class Solution { public boolean isValid (String s) { Stack<Character> stack=new Stack<>(); //假如长度是1或者不为偶数 if(s.length()<2||s.length()%2!=0){ if(s.isEmpty()){原创 2020-09-05 21:40:00 · 1367 阅读 · 0 评论 -
题目描述 给定一个链表,请判断该链表是否为回文结构。
import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solution { /** * * @param head ListNode类 the head * @return bool布尔型 */ public boolean isPail (ListNode head)原创 2020-09-05 20:28:43 · 214 阅读 · 0 评论 -
创建链表
#include <stdio.h>#include <stdlib.h>//这里创建一个结构体用来表示链表的结点类型struct node{ int data; struct node *next;};int main(){ struct node *p,*q,*head,*t; head=NULL; int n,a; scanf("%d",&am...原创 2020-04-19 12:03:43 · 1661 阅读 · 0 评论 -
排序常见算法
前言这部分对我来说太难了,代码看不懂,也不知啥意思,只能硬背,愁死了,哎!也没有找到好的方法,咋办,煎熬啊,兄弟!!!!!!!发明这些算法的大佬,真佩服他们!一.冒泡排序void BubbleSort(int a[], int n){ for(int i=0;i<n-1;i++){ for(int j=0;j<n-1-i;j++) if(a[j]>a[j+1]...原创 2019-10-15 20:35:49 · 71 阅读 · 0 评论