算法
文章平均质量分 78
如今故事发展
我们的征途是星辰大海
展开
-
287.找出数组中重复的数
//交换法主要思想是通过交换数组元素,使得数组上的元素在正确的位置上。//遍历数组,如果第 i 位上的元素不是 i + 1,那么一直交换第 i 位和 nums[i] - 1 位置上的元素。 public static List<int> test1(int[] nums){ for (int i = 0; i < nums.Length; i++) { whi...原创 2019-01-18 11:07:02 · 183 阅读 · 0 评论 -
求1 + 2 + ... + n 前n项和
1、循环求法int getSumWithIteration(int n) { int sum = 0; while(n > 0) sum += n--; return sum; }2、递归求法 int getSumWithRecursion(int n) { if(n == 1) return 1; retu...原创 2019-03-27 09:29:42 · 1420 阅读 · 0 评论 -
二分查找模板
/** * 二分查找,找到该值在数组中的下标,否则为-1 */int search(int arr[],int left, int right, int key){ if(!arr) return -1; while(left <= right) { int mid = left + right >> 1; if(a...原创 2019-03-30 16:28:09 · 172 阅读 · 0 评论 -
dp_03
题目:给定一个数组和一个目标数,判断数组中的元素能否加起来等于目标数(假设所有的数字都是正整数)#include&lt;iostream&gt;#include&lt;vector&gt;using namespace std;bool dp_opt(vector&lt;int&gt;&amp; nums, int i, int s){ if(s == 0) re原创 2019-03-10 21:36:14 · 141 阅读 · 0 评论 -
dp_02打家劫舍
https://leetcode-cn.com/problems/house-robber/原创 2019-03-10 21:00:04 · 155 阅读 · 0 评论 -
动态规划01
小明做任务,上午有8个任务,每个任务对应一定的佣金,同一时刻只能做一个任务,求小明最多能获取多少佣金?解决方案:int n = 8; //任务个数 int pre[] = {0, 0, 0, 1, 0, 2, 3, 5}; //选择这个任务之后前驱最近任务下标 int profit[] = {5, 1, 8, 4, 6, 3, 2, 4}; //任务收益 int opt[...原创 2019-03-10 20:19:27 · 178 阅读 · 0 评论 -
各种排序模板
1、冒泡排序 void Bubble_Sort(vector&amp;amp;amp;lt;int&amp;amp;amp;gt; &amp;amp;amp;amp;vec) { for(int i = 0; i &amp;amp;amp;lt; vec.size() -1; i ++) { bool flag=false; for(int j = 0; j &am原创 2019-02-18 20:35:42 · 613 阅读 · 1 评论 -
二叉树的前序,中序,后序遍历(非递归实现)
前序遍历思路:遇到一个节点,就访问该节点,然后进栈,然后遍历左子树,遍历完成后,弹出栈顶节点并出栈,并访问右子树。class Solution {public: /* 伪代码:1.栈初始化(空栈);2.循环直到root为空且栈为空 2.1 当root不空时循环 2.1.1 访问root; 2.1.2 将root的值保存到栈中; 2.1.3 遍历ro...原创 2019-02-12 21:44:51 · 330 阅读 · 0 评论 -
剑指offer P157 二叉树镜像和对称二叉树
输入一个二叉树,将它变换为它的镜像。方法一:递归 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), r...原创 2019-02-11 23:20:59 · 164 阅读 · 0 评论 -
子树和子结构
子树/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */c...原创 2019-02-11 21:50:37 · 359 阅读 · 0 评论 -
剑指offer P65 二叉树的下一个节点
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode *father; * TreeNode(int x) : val(x), left(NULL), righ...原创 2019-02-10 22:55:28 · 209 阅读 · 0 评论 -
剑指offer P63 重建二叉树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ c...原创 2019-02-10 00:14:24 · 161 阅读 · 0 评论 -
160. 相交链表
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。一:暴力法遍历第一个链表( 长度为m ),每遍历到一个节点,就在第二个链表上( 长度为n ) 顺序遍历每个节点,如果在第二个链表上有一个节点和第一个链表上的节点一样,则说明2个链表在这个节点上重合,这个节点就是他们的公共节点。时间复杂度O(m*n)。二:辅助栈法直接上代码ListNode *get...原创 2019-01-30 00:32:27 · 162 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点
//此题和查找倒数第k个节点结合,考虑鲁棒性ListNode* removeNthFromEnd(ListNode* head, int n) {if(head= =nullptr||n==0) return nullptr;ListNode* slow = head;ListNode* fast = head;for(int i = 0; i &amp;amp;amp;lt; n-1; i++)//如果链表...原创 2019-01-29 18:02:33 · 135 阅读 · 0 评论 -
82. 删除排序链表中的重复元素 II
class Solution {public: ListNode* deleteDuplicates(ListNode* head) { //维护一个prep节点,保证prep始终与下一个没有重复的节点连接在一起 ListNode *prep=nullptr; ListNode *curp=head; while(curp) { bool isnee...原创 2019-01-28 23:14:29 · 165 阅读 · 0 评论 -
240、有序矩阵查找
//每次比较矩阵右上角的数字和target public static bool searchMatrix(int[,] nums,int target) { int row=0; int col=nums.GetLength(1)-1; while (row&lt;nums.GetLength(0)&amp;&amp;col&gt;=0) { //选取矩阵右上角的...原创 2019-01-18 11:13:52 · 312 阅读 · 0 评论 -
二分查找模板
//二分查找int search(int arr[],int l, int r, int key){ while(l <= r) { int mid = (l + r) >> 1; if(arr[mid] == key) return mid; else if(arr[mid] < key) l = m...原创 2019-04-11 09:33:01 · 272 阅读 · 0 评论