摘要:
我们可以先对数组进行排序,然后再比较。因为排序之后如果有相同的,那么相同的值肯定是挨着的,我们只需要在排序之后两两比较即可 static void Main(string[] args) { int[] nums = { 1, 1, 2,6,5,2,1 }; var flag = containsD 阅读全文
摘要:
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 //双指针思路 public static int removeDuplicates(i 阅读全文
摘要:
给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 阅读全文
摘要:
买卖股票的最佳时机 给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: pric 阅读全文
摘要:
class BinarySearch { /// <summary> /// 查找方法 /// </summary> /// <param name="nums">数据</param> /// <param name="target">目标值</param> /// <returns></retur 阅读全文
摘要:
#region 暴⼒递归 时间复杂度是(O(2^n)) /* 这里面存在巨大的浪费 只有 f(n - 1) + f(n - 2) ⼀ 个加法操作,时间为 O(1)。 * 这个算法的时间复杂度为 O(2^n),指数级别,爆炸 * 观察递归树,很明显发现了算法低效的原因:存在⼤量重复计算 * 重叠⼦问题 阅读全文