diff --git "a/problems/0035.\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md" "b/problems/0035.\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md"
index 4b17bec679..cd2c88eb20 100644
--- "a/problems/0035.\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md"
+++ "b/problems/0035.\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md"
@@ -429,7 +429,57 @@ function searchInsert($nums, $target)
return $r + 1;
}
```
-
+### C
+```c
+//版本一 [left, right]左闭右闭区间
+int searchInsert(int* nums, int numsSize, int target){
+ //左闭右开区间 [0 , numsSize-1]
+ int left =0;
+ int mid =0;
+ int right = numsSize - 1;
+ while(left <= right){//左闭右闭区间 所以可以 left == right
+ mid = left + (right - left) / 2;
+ if(target < nums[mid]){
+ //target 在左区间 [left, mid - 1]中,原区间包含mid,右区间边界可以向左内缩
+ right = mid -1;
+ }else if( target > nums[mid]){
+ //target 在右区间 [mid + 1, right]中,原区间包含mid,左区间边界可以向右内缩
+ left = mid + 1;
+ }else {
+ // nums[mid] == target ,顺利找到target,直接返回mid
+ return mid;
+ }
+ }
+ //数组中未找到target元素
+ //target在数组所有元素之后,[left, right]是右闭区间,需要返回 right +1
+ return right + 1;
+}
+```
+```c
+//版本二 [left, right]左闭右开区间
+int searchInsert(int* nums, int numsSize, int target){
+ //左闭右开区间 [0 , numsSize)
+ int left =0;
+ int mid =0;
+ int right = numsSize;
+ while(left < right){//左闭右闭区间 所以 left < right
+ mid = left + (right - left) / 2;
+ if(target < nums[mid]){
+ //target 在左区间 [left, mid)中,原区间没有包含mid,右区间边界不能内缩
+ right = mid ;
+ }else if( target > nums[mid]){
+ // target 在右区间 [mid+1, right)中,原区间包含mid,左区间边界可以向右内缩
+ left = mid + 1;
+ }else {
+ // nums[mid] == target ,顺利找到target,直接返回mid
+ return mid;
+ }
+ }
+ //数组中未找到target元素
+ //target在数组所有元素之后,[left, right)是右开区间, return right即可
+ return right;
+}
+```
-----------------------
diff --git "a/problems/0455.\345\210\206\345\217\221\351\245\274\345\271\262.md" "b/problems/0455.\345\210\206\345\217\221\351\245\274\345\271\262.md"
index f9e8e7f1bc..93a4c2d342 100644
--- "a/problems/0455.\345\210\206\345\217\221\351\245\274\345\271\262.md"
+++ "b/problems/0455.\345\210\206\345\217\221\351\245\274\345\271\262.md"
@@ -274,6 +274,7 @@ function findContentChildren(g: number[], s: number[]): number {
### C
```c
+///小餅乾先餵飽小胃口的
int cmp(int* a, int* b) {
return *a - *b;
}
@@ -296,6 +297,33 @@ int findContentChildren(int* g, int gSize, int* s, int sSize){
}
```
+```c
+///大餅乾先餵飽大胃口的
+int cmp(int* a, int* b) {
+ return *a - *b;
+}
+
+int findContentChildren(int* g, int gSize, int* s, int sSize){
+ if(sSize == 0)
+ return 0;
+
+ //将两个数组排序为升序
+ qsort(g, gSize, sizeof(int), cmp);
+ qsort(s, sSize, sizeof(int), cmp);
+
+ int count = 0;
+ int start = sSize - 1;
+
+ for(int i = gSize - 1; i >= 0; i--) {
+ if(start >= 0 && s[start] >= g[i] ) {
+ start--;
+ count++;
+ }
+ }
+ return count;
+}
+```
+
### Scala
```scala
diff --git "a/problems/0707.\350\256\276\350\256\241\351\223\276\350\241\250.md" "b/problems/0707.\350\256\276\350\256\241\351\223\276\350\241\250.md"
index 83e57fec82..1f7e6cbfed 100644
--- "a/problems/0707.\350\256\276\350\256\241\351\223\276\350\241\250.md"
+++ "b/problems/0707.\350\256\276\350\256\241\351\223\276\350\241\250.md"
@@ -1240,6 +1240,94 @@ class MyLinkedList() {
}
```
+Rust:
+
+```rust
+#[derive(Debug)]
+pub struct MyLinkedList {
+ pub val: i32,
+ pub next: Option>,
+}
+
+impl MyLinkedList {
+ fn new() -> Self {
+ // 增加头节点
+ MyLinkedList { val: 0, next: None }
+ }
+
+ fn get(&self, index: i32) -> i32 {
+ if index < 0 {
+ return -1;
+ }
+ let mut i = 0;
+ let mut cur = &self.next;
+ while let Some(node) = cur {
+ if i == index {
+ return node.val;
+ }
+ i += 1;
+ cur = &node.next;
+ }
+ -1
+ }
+
+ fn add_at_head(&mut self, val: i32) {
+ let new_node = Box::new(MyLinkedList {
+ val,
+ next: self.next.take(),
+ });
+ self.next = Some(new_node);
+ }
+
+ fn add_at_tail(&mut self, val: i32) {
+ let new_node = Box::new(MyLinkedList { val, next: None });
+ let mut last_node = &mut self.next;
+ while let Some(node) = last_node {
+ last_node = &mut node.next;
+ }
+ *last_node = Some(new_node);
+ }
+
+ fn add_at_index(&mut self, index: i32, val: i32) {
+ if index <= 0 {
+ self.add_at_head(val);
+ } else {
+ let mut i = 0;
+ let mut cur = &mut self.next;
+ while let Some(node) = cur {
+ if i + 1 == index {
+ let new_node = Box::new(MyLinkedList {
+ val,
+ next: node.next.take(),
+ });
+ node.next = Some(new_node);
+ break;
+ }
+ i += 1;
+ cur = &mut node.next;
+ }
+ }
+ }
+
+ fn delete_at_index(&mut self, index: i32) {
+ if index < 0 {
+ return;
+ }
+
+ let mut i = 0;
+ let mut cur = self;
+ while let Some(node) = cur.next.take() {
+ if i == index {
+ cur.next = node.next;
+ break;
+ }
+ i += 1;
+ cur.next = Some(node);
+ cur = cur.next.as_mut().unwrap();
+ }
+ }
+}
+```
-----------------------